summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-05-27 05:29:50 -0400
committerrealtradam <[email protected]>2021-05-27 05:29:50 -0400
commitecbf3f77aefb9045197e6aec89369494f878dffb (patch)
tree2ab1ce542a572a71980078adbb374866cb6bd819
parent58470d70add715bd4ea4fd75c14eb56b9e649c41 (diff)
downloadFelECS-ecbf3f77aefb9045197e6aec89369494f878dffb.tar.gz
FelECS-ecbf3f77aefb9045197e6aec89369494f878dffb.zip
set up to write unit tests
-rw-r--r--.gitignore2
-rw-r--r--README.mdown3
-rw-r--r--Rakefile6
-rw-r--r--coverage/coverage_badge_total.svg35
-rw-r--r--entity_manager.rb98
-rw-r--r--scene_manager.rb0
-rw-r--r--stage_manager.rb0
-rw-r--r--test.rb18
-rw-r--r--tests/_test_helper.rb28
-rw-r--r--tests/_test_sample.rb14
-rw-r--r--tests/component_manager_test.rb15
-rw-r--r--tests/entity_manager_test.rb18
-rw-r--r--tests/scene_manager_test.rb15
-rw-r--r--tests/signatures_test.rb15
-rw-r--r--tests/stage_manager_test.rb15
-rw-r--r--tests/system_manager_test.rb15
16 files changed, 231 insertions, 66 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3c6f541
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+coverage/*
+!coverage/coverage_badge_total.svg
diff --git a/README.mdown b/README.mdown
index b43cd37..4b684cc 100644
--- a/README.mdown
+++ b/README.mdown
@@ -1,6 +1,9 @@
![FelFlame](https://filestorage.catgirls.rodeo/images/felflame-logo-full.png)
+[![Maintainability](https://api.codeclimate.com/v1/badges/56d425d9078e98efb74b/maintainability)](https://codeclimate.com/github/realtradam/FelFlame/maintainability)
+[![Test Coverage](https://api.codeclimate.com/v1/badges/56d425d9078e98efb74b/test_coverage)](https://codeclimate.com/github/realtradam/FelFlame/test_coverage)
+
# What is this?
This is a Ruby ECS Framework for developing games. It is still a work in progress in the early stages, is not fit for use, and does not work.
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..4c11b1c
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,6 @@
+
+require 'rake/testtask'
+
+Rake::TestTask.new do |t|
+ t.pattern = "tests/**/*_test.rb"
+end
diff --git a/coverage/coverage_badge_total.svg b/coverage/coverage_badge_total.svg
new file mode 100644
index 0000000..480a39f
--- /dev/null
+++ b/coverage/coverage_badge_total.svg
@@ -0,0 +1,35 @@
+<svg contentScriptType="text/ecmascript" contentStyleType="text/css" preserveAspectRatio="xMidYMid meet" version="1.0" height="20" width="120"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+
+<linearGradient id="smooth" x2="0" y2="120">
+<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
+<stop offset="1" stop-opacity=".1"/>
+</linearGradient>
+<clipPath id="round">
+<rect height="20" width="120" rx="3" fill="#fff"/>
+</clipPath>
+<g clip-path="url(#round)">
+<rect height="20" width="60" fill="#555"/>
+<rect x="60" height="20" width="60" fill="#cccc00"/>
+<rect height="20" width="120" fill="url(#smooth)"/>
+</g>
+<g fill="#fff" text-anchor="middle" font-family="Verdana,sans-serif" font-size="11">
+<text x="30" y="15" fill="#010101" fill-opacity="0.3">
+scov total
+</text>
+<text x="30" y="14">
+scov total
+</text>
+</g>
+<g fill="#fff" text-anchor="middle" font-family="Verdana,sans-serif" font-size="11">
+<text x="90" y="15" fill="#010101" fill-opacity="0.3">
+32%
+</text>
+<text x="90" y="14">
+32%
+</text>
+</g>
+
+</svg> \ No newline at end of file
diff --git a/entity_manager.rb b/entity_manager.rb
index 7d0d1ff..177ce1a 100644
--- a/entity_manager.rb
+++ b/entity_manager.rb
@@ -1,62 +1,64 @@
-class Entity
- attr_accessor :id
+class FelFlame
+ class Entities
+ attr_accessor :id
- def initialize(*signature)
- final_signature = 0
- signature.each do |sig|
- final_signature += sig
+ def initialize(*signature)
+ final_signature = 0
+ signature.each do |sig|
+ final_signature += sig
+ end
+ @id = Entities.generate_new_id
+ self.class.all.push self
+ self.class.signatures.push final_signature
+ Components.entity_created(@id)
end
- @id = Entity.generate_new_id
- self.class.all.push self
- self.class.signatures.push final_signature
- Components.entity_created(@id)
- end
- class <<self
- # All entities that exist
- def all
- @all ||= []
- end
+ class <<self
+ # All entities that exist
+ def all
+ @all ||= []
+ end
- def id_queue
- @id_queue ||= []
- end
+ def id_queue
+ @id_queue ||= []
+ end
- def generate_new_id
- if id_queue.empty?
- all.size
- else
- id_queue.shift
+ def generate_new_id
+ if id_queue.empty?
+ all.size
+ else
+ id_queue.shift
+ end
end
- end
- # What components a given entity uses
- def signatures
- @signatures ||= []
- end
+ # What components a given entity uses
+ def signatures
+ @signatures ||= []
+ end
- def destroy_entity(entity_id)
- if all[entity_id].nil?
- puts 'Entity can not be destroyed, id out of bounds'
- elsif entity_id < all.size - 1
- Components.constants.each do |constant|
- unless (signatures[entity_id] & Components::const_get(constant).id).zero?
- Components::const_get(constant).delete(entity_id)
+ def destroy_entity(entity_id)
+ if all[entity_id].nil?
+ puts 'Entity can not be destroyed, id out of bounds'
+ elsif entity_id < all.size - 1
+ Components.constants.each do |constant|
+ unless (signatures[entity_id] & Components::const_get(constant).id).zero?
+ Components::const_get(constant).delete(entity_id)
+ end
end
- end
- all[entity_id] = nil
- signatures[entity_id] = nil
- id_queue.push entity_id
- elsif entity_id == all.size - 1
- Components.constants.each do |constant|
- unless (signatures[entity_id] & Components::const_get(constant).id).zero?
- Components::const_get(constant).delete(entity_id)
+ all[entity_id] = nil
+ signatures[entity_id] = nil
+ id_queue.push entity_id
+ elsif entity_id == all.size - 1
+ Components.constants.each do |constant|
+ unless (signatures[entity_id] & Components::const_get(constant).id).zero?
+ Components::const_get(constant).delete(entity_id)
+ end
end
+ all.pop
+ signatures.pop
+ else
+ puts 'Unknown error with destroy_entity, entity not destroyed'
end
- all.pop
- signatures.pop
- else
- puts 'Unknown error with destroy_entity, entity not destroyed'
end
end
end
diff --git a/scene_manager.rb b/scene_manager.rb
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scene_manager.rb
diff --git a/stage_manager.rb b/stage_manager.rb
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stage_manager.rb
diff --git a/test.rb b/test.rb
deleted file mode 100644
index 13fd401..0000000
--- a/test.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require_relative './entity_manager.rb'
-require_relative './component_manager.rb'
-require_relative './system_manager.rb'
-
-move = '0001'.to_i(2)
-base = '0010'.to_i(2)
-both = '0011'.to_i(2)
-Entity.new(move)
-Entity.new(base)
-Entity.new(both)
-
-3.times do
- Systems.constants.each do |constant|
- puts "|----#{constant.to_s.upcase}----|"
- Systems::const_get(constant).run
- end
- #ECS::Entity.destroy_entity(ECS::Entity.all.last.id) unless ECS::Entity.all.empty?
-end
diff --git a/tests/_test_helper.rb b/tests/_test_helper.rb
new file mode 100644
index 0000000..25975f4
--- /dev/null
+++ b/tests/_test_helper.rb
@@ -0,0 +1,28 @@
+require 'simplecov'
+require 'simplecov_small_badge'
+
+# SimpleCovSmallBadge fix
+SimpleCovSmallBadge::Formatter.class_eval do
+ private
+ def state(covered_percent)
+ if SimpleCov.minimum_coverage[:line]&.positive?
+ if covered_percent >= SimpleCov.minimum_coverage[:line]
+ 'good'
+ else
+ 'bad'
+ end
+ else
+ 'unknown'
+ end
+ end
+end
+
+SimpleCov.start do
+ SimpleCov.add_filter 'tests'
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new([
+ SimpleCov::Formatter::HTMLFormatter,
+ SimpleCovSmallBadge::Formatter
+ ])
+end
+
+require 'minitest/autorun'
diff --git a/tests/_test_sample.rb b/tests/_test_sample.rb
new file mode 100644
index 0000000..afc3384
--- /dev/null
+++ b/tests/_test_sample.rb
@@ -0,0 +1,14 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative 'stuff_we_testing'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ #_(@thing).mustequal 'something
+ end
+end
diff --git a/tests/component_manager_test.rb b/tests/component_manager_test.rb
new file mode 100644
index 0000000..956f604
--- /dev/null
+++ b/tests/component_manager_test.rb
@@ -0,0 +1,15 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../component_manager.rb'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ _(4).must_equal 4
+ #_(@thing).mustequal 'something
+ end
+end
diff --git a/tests/entity_manager_test.rb b/tests/entity_manager_test.rb
new file mode 100644
index 0000000..f6e7c66
--- /dev/null
+++ b/tests/entity_manager_test.rb
@@ -0,0 +1,18 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../entity_manager.rb'
+
+describe 'Entities' do
+ before do
+ @one = FelFlame::Entities.new
+ @two = FelFlame::Entities.new
+ @three = FelFlame::Entities.new
+ end
+
+ it 'Has correct ID\'s' do
+ _(@one.id).must_equal 0
+ _(@two.id).must_equal 1
+ _(@three.id).must_equal 2
+ end
+end
diff --git a/tests/scene_manager_test.rb b/tests/scene_manager_test.rb
new file mode 100644
index 0000000..38febb8
--- /dev/null
+++ b/tests/scene_manager_test.rb
@@ -0,0 +1,15 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../scene_manager.rb'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ _(4).must_equal 4
+ #_(@thing).mustequal 'something
+ end
+end
diff --git a/tests/signatures_test.rb b/tests/signatures_test.rb
new file mode 100644
index 0000000..9d1bd9a
--- /dev/null
+++ b/tests/signatures_test.rb
@@ -0,0 +1,15 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../signatures.rb'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ _(4).must_equal 4
+ #_(@thing).mustequal 'something
+ end
+end
diff --git a/tests/stage_manager_test.rb b/tests/stage_manager_test.rb
new file mode 100644
index 0000000..69fda0a
--- /dev/null
+++ b/tests/stage_manager_test.rb
@@ -0,0 +1,15 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../stage_manager.rb'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ _(4).must_equal 4
+ #_(@thing).mustequal 'something
+ end
+end
diff --git a/tests/system_manager_test.rb b/tests/system_manager_test.rb
new file mode 100644
index 0000000..e02b283
--- /dev/null
+++ b/tests/system_manager_test.rb
@@ -0,0 +1,15 @@
+require 'minitest/autorun'
+require_relative '_test_helper.rb'
+
+require_relative '../system_manager.rb'
+
+describe 'Sample' do
+ before do
+ #setup vars here
+ end
+
+ it 'does something' do
+ _(4).must_equal 4
+ #_(@thing).mustequal 'something
+ end
+end