diff options
| author | _Tradam <[email protected]> | 2022-01-03 08:26:24 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-01-03 08:26:24 -0500 |
| commit | a0f792d8feadf919290b8349dbc0eac143545927 (patch) | |
| tree | ee70c5357d5969caaed08446c32746e656b223e6 /spec/entity_manager_spec.rb | |
| parent | b535a6b1bd8019dbeba17f3853b338383208c9b3 (diff) | |
| download | FelECS-4.0.0.tar.gz FelECS-4.0.0.zip | |
See Changelog
Diffstat (limited to 'spec/entity_manager_spec.rb')
| -rw-r--r-- | spec/entity_manager_spec.rb | 105 |
1 files changed, 64 insertions, 41 deletions
diff --git a/spec/entity_manager_spec.rb b/spec/entity_manager_spec.rb index ef638c0..2068986 100644 --- a/spec/entity_manager_spec.rb +++ b/spec/entity_manager_spec.rb @@ -1,19 +1,18 @@ -require 'felflame' +# frozen_string_literal: true -#class EntitiesTest < Minitest::Test +require_relative '../lib/felflame' -describe 'Entities' do - - #let :component_manager do - # @component_manager ||= FelFlame::Components.new('Test', :param1, param2: 'def') - #end +# class EntitiesTest < Minitest::Test +describe 'Entities' do before :all do + $VERBOSE = nil @component_manager ||= FelFlame::Components.new('TestEntity', :param1, param2: 'def') end - before :each do + @orig_stderr = $stderr + $stderr = StringIO.new @ent0 = FelFlame::Entities.new @ent1 = FelFlame::Entities.new @ent2 = FelFlame::Entities.new @@ -23,8 +22,40 @@ describe 'Entities' do end after :each do - FelFlame::Entities.each(&:delete) - @component_manager.each(&:delete) + $stderr = @orig_stderr + FelFlame::Entities.reverse_each(&:delete) + @component_manager.reverse_each(&:delete) + end + + it 'can get a single component' do + expect { @ent0.component[@component_manager] }.to raise_error(RuntimeError) + @ent0.add @cmp0 + expect(@ent0.component[@component_manager]).to eq(@cmp0) + expect(@ent0.component[@component_manager]).to eq(@ent0.component(@component_manager)) + @ent0.add @cmp1 + @ent0.component[@component_manager] + $stderr.rewind + $stderr.string.chomp.should eq("This entity has MANY of this component but you called the method that is intended for having a single of this component type.\nYou may have a bug in your logic.") + @ent0.components[@component_manager].reverse_each do |component| + @ent0.remove component + end + expect { @ent0.component[@component_manager] }.to raise_error(RuntimeError) + end + + it 'responds to array methods' do + expect(FelFlame::Entities.respond_to?(:[])).to be true + expect(FelFlame::Entities.respond_to?(:each)).to be true + FelFlame::Entities.each do |entity| + expect(entity.respond_to?(:components)).to be true + end + expect(FelFlame::Entities.respond_to?(:filter)).to be true + expect(FelFlame::Entities.respond_to?(:first)).to be true + expect(FelFlame::Entities.respond_to?(:last)).to be true + expect(FelFlame::Entities.respond_to?(:somethingwrong)).to be false + end + + it 'dont respond to missing methods' do + expect { FelFlame::Entities.somethingwrong }.to raise_error(NoMethodError) end it 'won\'t add duplicate entities' do @@ -32,21 +63,15 @@ describe 'Entities' do expect(@ent0.components[@component_manager].count).to eq(2) end - it 'has correct ID\'s' do - expect(@ent0.id).to eq(0) - expect(@ent1.id).to eq(1) - expect(@ent2.id).to eq(2) - end - it 'can be accessed' do - expect(@ent0).to eq(FelFlame::Entities[0]) - expect(@ent1).to eq(FelFlame::Entities[1]) - expect(@ent2).to eq(FelFlame::Entities[2]) + expect(FelFlame::Entities[0].respond_to?(:components)).to eq(true) + expect(FelFlame::Entities[1].respond_to?(:components)).to eq(true) + expect(FelFlame::Entities[2].respond_to?(:components)).to eq(true) end it 'can have components attached' do @ent0.add @cmp0 - expect(@ent0.components[@component_manager][0]).to eq(@cmp0) + expect(@ent0.component[@component_manager]).to eq(@cmp0) @ent1.add @cmp1, @cmp2 expect(@ent1.components[@component_manager].length).to eq(2) @@ -54,38 +79,36 @@ describe 'Entities' do expect(@ent1.components[@component_manager].include?(@cmp2)).to be true end - it 'can get id from to_i' do - expect(@ent0.id).to eq(@ent0.to_i) - expect(@ent1.id).to eq(@ent1.to_i) - expect(@ent2.id).to eq(@ent2.to_i) - end - it 'can have components removed' do @ent0.add @cmp0 - expect(@ent0.remove @cmp0).to be true + expect(@ent0.remove(@cmp0)).to be true expect(@cmp0.entities.empty?).to be true - expect(@ent0.components[@component_manager].empty?).to be true + expect(@ent0.components[@component_manager].nil?).to be true + @ent0.add @cmp0 + @cmp0.delete + expect(@ent0.components[@component_manager].nil?).to be true end it 'can have many components added then removed' do @ent0.add @cmp0, @cmp1, @cmp2 @ent1.add @cmp0, @cmp1 @ent2.add @cmp1, @cmp2 - expect(@ent0.components).to eq({@component_manager => [@cmp0,@cmp1,@cmp2]}) - expect(@cmp0.entities).to eq([@ent0,@ent1]) - expect(@cmp1.entities).to eq([@ent0,@ent1,@ent2]) - expect(@cmp2.entities).to eq([@ent0,@ent2]) + expect(@ent0.components).to eq({ @component_manager => [@cmp0, @cmp1, @cmp2] }) + expect(@cmp0.entities).to eq([@ent0, @ent1]) + expect(@cmp1.entities).to eq([@ent0, @ent1, @ent2]) + expect(@cmp2.entities).to eq([@ent0, @ent2]) @ent1.delete expect(@cmp0.entities).to eq([@ent0]) - expect(@cmp1.entities).to eq([@ent0,@ent2]) - expect(@cmp2.entities).to eq([@ent0,@ent2]) + expect(@cmp1.entities).to eq([@ent0, @ent2]) + expect(@cmp2.entities).to eq([@ent0, @ent2]) @cmp1.delete - expect(@ent0.components).to eq({@component_manager => [@cmp0,@cmp2]}) - @component_manager.each(&:delete) - expect(@component_manager.each.to_a).to eq([]) - expect(@ent0.components).to eq({@component_manager => []}) - expect(@ent2.components).to eq({@component_manager => []}) - FelFlame::Entities.each(&:delete) - expect(FelFlame::Entities.each.to_a).to eq([]) + expect(@ent0.components).to eq({ @component_manager => [@cmp0, @cmp2] }) + @component_manager.reverse_each(&:delete) + expect(@component_manager.length).to eq(0) + expect(@component_manager.empty?).to be true + expect(@ent0.components).to eq({}) + expect(@ent2.components).to eq({}) + FelFlame::Entities.reverse_each(&:delete) + expect(FelFlame::Entities.empty?).to be true end end |
