1+ using Hexecs . Tests . Mocks ;
2+
3+ namespace Hexecs . Tests . Assets ;
4+
5+ public sealed class AssetFilter1Should ( AssetTestFixture fixture ) : IClassFixture < AssetTestFixture >
6+ {
7+ [ Fact ( DisplayName = "Фильтр ассетов должен содержать все созданные ассеты" ) ]
8+ public void ContainsAllAssets ( )
9+ {
10+ // arrange
11+ var assetIds = new List < uint > ( ) ;
12+
13+ var ( context , world ) = fixture . CreateAssetContext ( loader =>
14+ {
15+ for ( int i = 1 ; i < 100 ; i ++ )
16+ {
17+ var asset = loader . CreateAsset ( new CarAsset ( i , i ) ) ;
18+ assetIds . Add ( asset . Id ) ;
19+ }
20+ } ) ;
21+
22+ var expectedAssets = assetIds . Select ( id => context . GetAsset ( id ) ) . ToArray ( ) ;
23+
24+ // act
25+
26+ var filter = context . Filter < CarAsset > ( ) ;
27+ var actualActors = filter . ToArray ( ) ;
28+
29+ // assert
30+
31+ actualActors
32+ . Should ( )
33+ . Contain ( expectedAssets ) ;
34+
35+ world . Dispose ( ) ;
36+ }
37+
38+ [ Fact ( DisplayName = "Фильтр ассетов можно перебирать как AssetRef" ) ]
39+ public void AssetFilterShouldEnumerable ( )
40+ {
41+ // arrange
42+ var expectedIds = new Dictionary < uint , CarAsset > ( ) ;
43+
44+ var ( context , world ) = fixture . CreateAssetContext ( loader =>
45+ {
46+ for ( var i = 0 ; i < 100 ; i ++ )
47+ {
48+ var component = new CarAsset ( i , i ) ;
49+ var asset = loader . CreateAsset ( component ) ;
50+
51+ expectedIds . Add ( asset . Id , component ) ;
52+ }
53+ } ) ;
54+
55+ // act
56+
57+ var filter = context . Filter < CarAsset > ( ) ;
58+
59+ // assert
60+
61+ var actualIds = new List < uint > ( ) ;
62+ foreach ( var asset in filter )
63+ {
64+ actualIds . Add ( asset . Id ) ;
65+ asset
66+ . Component1
67+ . Should ( ) . Be ( expectedIds [ asset . Id ] ) ;
68+ }
69+
70+ filter . Length
71+ . Should ( ) . Be ( expectedIds . Count ) ;
72+
73+ actualIds
74+ . Should ( )
75+ . HaveCount ( expectedIds . Count ) ;
76+
77+ actualIds
78+ . Should ( )
79+ . Contain ( expectedIds . Keys ) ;
80+
81+ world . Dispose ( ) ;
82+ }
83+ }
0 commit comments