From ffaad06420594d0d007114042016362e88e6485a Mon Sep 17 00:00:00 2001 From: realtradam Date: Wed, 7 Jul 2021 17:51:08 -0400 Subject: added completed tests --- spec/scene_manager_spec.rb | 64 ++++++++++++++++++++++++++++ spec/stage_manager_spec.rb | 103 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 spec/scene_manager_spec.rb create mode 100644 spec/stage_manager_spec.rb diff --git a/spec/scene_manager_spec.rb b/spec/scene_manager_spec.rb new file mode 100644 index 0000000..b2afab0 --- /dev/null +++ b/spec/scene_manager_spec.rb @@ -0,0 +1,64 @@ +require_relative '../felflame.rb' + +#class EntitiesTest < Minitest::Test + +describe 'Scenes' do + before :all do + @component_manager ||= FelFlame::Components.new('TestScenes', order: []) + @system2 = FelFlame::Systems.new('Test', priority: 2) do + @component_manager.each do |component| + component.order.push 2 + end + end + @system1 = FelFlame::Systems.new('Mana', priority: 1) do + @component_manager.each do |component| + component.order.push 1 + end + end + @system3 = FelFlame::Systems.new('Spell', priority: 3) do + @component_manager.each do |component| + component.order.push 3 + end + end + @scene = FelFlame::Scenes.new('TestScene') + end + + before :each do + @cmp = @component_manager.new + end + + after :each do + FelFlame::Entities.each(&:delete) + @component_manager.each(&:delete) + @scene.clear + end + + it 'can add Systems' do + @scene.add @system2, @system3, @system1 + expect(@scene.systems).to eq([@system1, @system2, @system3]) + end + + it 'can remove Systems' do + @scene.add @system2, @system3, @system1 + @scene.remove @system2, @system3 + expect(@scene.systems).to eq([@system1]) + end + + it 'can clear Systems' do + @scene.add @system2, @system3, @system1 + @scene.clear + expect(@scene.systems).to eq([]) + end + + it 'has the correct constant name' do + match = FelFlame::Scenes.new('Match') + expect(FelFlame::Scenes::Match.const_name).to eq('Match') + expect(match.const_name).to eq('Match') + end + + it 'can execute Systems in the correct order' do + @scene.add @system2, @system3, @system1 + @scene.call + expect(@cmp.order).to eq([1, 2, 3]) + end +end diff --git a/spec/stage_manager_spec.rb b/spec/stage_manager_spec.rb new file mode 100644 index 0000000..793758c --- /dev/null +++ b/spec/stage_manager_spec.rb @@ -0,0 +1,103 @@ +require_relative '../felflame.rb' + +#class EntitiesTest < Minitest::Test + +describe 'Stage' do + before :all do + @component_manager ||= FelFlame::Components.new('TestStage', order: Array.new) + @system2 = FelFlame::Systems.new('StageTest', priority: 50) do + @component_manager.each do |component| + component.order.push 2 + end + end + @system1 = FelFlame::Systems.new('StageMana', priority: 1) do + @component_manager.each do |component| + component.order.push 1 + end + end + @system3 = FelFlame::Systems.new('StageSpell', priority: 100) do + @component_manager.each do |component| + component.order.push 3 + end + end + @scene1 = FelFlame::Scenes.new('TestStage1') + @scene2 = FelFlame::Scenes.new('TestStage2') + @scene3 = FelFlame::Scenes.new('TestStage3') + end + + before :each do + @cmp = @component_manager.new + @scene1.add @system1 + @scene2.add @system2 + @scene3.add @system3 + end + + after :each do + FelFlame::Entities.each(&:delete) + @component_manager.each(&:delete) + @scene1.clear + @scene2.clear + @scene3.clear + FelFlame::Stage.clear + end + + it 'can add Scenes' do + FelFlame::Stage.add @scene2, @scene1, @scene3 + expect(FelFlame::Stage.scenes).to eq([@scene2, @scene1, @scene3]) + expect(FelFlame::Stage.systems).to eq([@system1, @system2, @system3]) + end + + it 'can remove Scenes' do + FelFlame::Stage.add @scene1, @scene2, @scene3 + FelFlame::Stage.remove @scene1, @scene3 + expect(FelFlame::Stage.scenes).to eq([@scene2]) + expect(FelFlame::Stage.systems).to eq([@system2]) + end + + it 'can clear Scenes' do + FelFlame::Stage.add @scene1, @scene2, @scene3 + FelFlame::Stage.clear + expect(FelFlame::Stage.scenes).to eq([]) + expect(FelFlame::Stage.systems).to eq([]) + end + + it 'can execute Systems in the correct order' do + FelFlame::Stage.add @scene2, @scene1, @scene3 + FelFlame::Stage.call + expect(@cmp.order).to eq([1, 2, 3]) + end + + it 'can add Systems to Scenes already added in Stage' do + FelFlame::Stage.add @scene2, @scene1, @scene3 + system2p5 = FelFlame::Systems.new('StageAddingTest', priority: 75) do + @component_manager.each do |component| + component.order.push 2.5 + end + end + @scene2.add system2p5 + @scene3.add system2p5 + FelFlame::Stage.call + expect(@cmp.order).to eq([1,2,2.5,3]) + end + + it 'can remove Systems to Scenes already added in Stage' do + FelFlame::Stage.add @scene2, @scene1, @scene3 + system2p5 = FelFlame::Systems.new('StageAddingTest', priority: 75) do + @component_manager.each do |component| + component.order.push 2.5 + end + end + @scene2.add system2p5 + @scene3.add system2p5 + @scene2.remove @system2 + FelFlame::Stage.call + expect(@cmp.order).to eq([1,2.5,3]) + end + + it 'can have Systems change priority in an existing Stage' do + FelFlame::Stage.add @scene2, @scene1, @scene3 + @system2.priority = 0 + FelFlame::Stage.call + expect(@cmp.order).to eq([2,1,3]) + end +end -- cgit v1.2.3