Mercurial > repos > IBBoard.WarFoundry.API.Tests
annotate API/WarFoundryLoaderTest.cs @ 235:d122354eeebc
Re #410: N per M models in parent requirement
* Add tests for adding
* Change text on adding to make more sense (tell users N, M, and how many there are now)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Wed, 01 Aug 2012 21:01:43 +0100 |
parents | 6ec46f3db2d4 |
children |
rev | line source |
---|---|
11 | 1 // This file (WarFoundryLoaderTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2008, 2009 IBBoard. |
0 | 2 // |
11 | 3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. |
0 | 4 |
5 using System; | |
6 using System.IO; | |
7 using NUnit.Framework; | |
12
a4e7e938d065
Re #195: Setting max equipment without min may not function correctly
IBBoard <dev@ibboard.co.uk>
parents:
11
diff
changeset
|
8 using IBBoard.WarFoundry.API.Factories.Mock; |
0 | 9 using IBBoard.WarFoundry.API.Objects; |
86
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
10 using NUnit.Framework.SyntaxHelpers; |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
11 using System.Collections.Generic; |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
12 using IBBoard.WarFoundry.API.Factories.Xml; |
157
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
13 using IBBoard.WarFoundry.API.Factories.Requirement; |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
14 using IBBoard.WarFoundry.API.Objects.Requirement; |
228
7c21ca1482cb
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
157
diff
changeset
|
15 using IBBoard.WarFoundry.API.Loading; |
0 | 16 |
17 namespace IBBoard.WarFoundry.API.Factories | |
18 { | |
19 [TestFixture()] | |
20 public class WarFoundryLoaderTest | |
21 { | |
9 | 22 private AbstractNativeWarFoundryFactory sysFactory; |
0 | 23 |
24 [Test()] | |
25 public void TestLoadWithoutFactoriesCompletesWithoutError() | |
26 { | |
27 WarFoundryLoader.GetDefault().LoadFiles(); | |
28 } | |
29 | |
30 [Test()] | |
31 public void TestLoadingSystemCompletesWithoutError() | |
32 { | |
35
4302e6b2c5c1
Re #228: Crash with missing abilityID
IBBoard <dev@ibboard.co.uk>
parents:
12
diff
changeset
|
33 AbstractWarFoundryLoader loader = WarFoundryLoader.GetDefault(); |
9 | 34 DirectoryInfo dir = new DirectoryInfo("testdata"); |
35 loader.RegisterFactory(GetSystemFactory()); | |
228
7c21ca1482cb
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
157
diff
changeset
|
36 ILoadableObjectSource loadSource = new LoadableObjectSourceDirectory(dir); |
7c21ca1482cb
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
157
diff
changeset
|
37 loader.AddLoadSource(loadSource); |
0 | 38 loader.LoadFiles(); |
39 Assert.Greater(loader.GetGameSystems().Length, 0); | |
228
7c21ca1482cb
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
157
diff
changeset
|
40 loader.RemoveLoadSource(loadSource); |
9 | 41 loader.UnregisterFactory(GetSystemFactory()); |
0 | 42 } |
86
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
43 |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
44 [Test()] |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
45 public void TestBug318LoadingSingleFileShouldNotNullRef() |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
46 { |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
47 DefaultWarFoundryLoader loader = new DefaultWarFoundryLoader(); |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
48 loader.RegisterFactory(WarFoundryXmlFactory.GetFactory()); |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
49 ICollection<IWarFoundryObject> objs = loader.LoadFile(new FileInfo("testdata/Test.system")); |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
50 Assert.That(objs, Has.Count(1)); |
d1ec7618f812
Fixes #318: DefaultWarFoundryLoader throws null ref when loading individual files
IBBoard <dev@ibboard.co.uk>
parents:
35
diff
changeset
|
51 } |
157
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
52 |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
53 [Test()] |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
54 public void TestRegisterRequirementFactoryAddsFactory() |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
55 { |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
56 string factoryID = "SomeID"; |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
57 MockRequirementFactory mockFactory = new MockRequirementFactory(factoryID); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
58 WarFoundryLoader.RegisterRequirementFactory(mockFactory); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
59 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID), Is.EqualTo(mockFactory)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
60 Assert.That(WarFoundryLoader.GetRequirementFactory("fibble"), Is.Null); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
61 } |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
62 |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
63 [Test()] |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
64 public void TestRegisterRequirementFactoryAddsFactories() |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
65 { |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
66 string factoryID1 = "SomeID"; |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
67 MockRequirementFactory mockFactory1 = new MockRequirementFactory(factoryID1); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
68 WarFoundryLoader.RegisterRequirementFactory(mockFactory1); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
69 string factoryID2 = "SomeOtherID"; |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
70 MockRequirementFactory mockFactory2 = new MockRequirementFactory(factoryID2); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
71 WarFoundryLoader.RegisterRequirementFactory(mockFactory2); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
72 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID1), Is.EqualTo(mockFactory1)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
73 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID2), Is.EqualTo(mockFactory2)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
74 Assert.That(WarFoundryLoader.GetRequirementFactory("fibble"), Is.Null); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
75 } |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
76 |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
77 [Test()] |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
78 public void TestRegisterRequirementFactoryOverridesWithSecondFactory() |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
79 { |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
80 string factoryID = "SomeID"; |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
81 MockRequirementFactory mockFactory1 = new MockRequirementFactory(factoryID); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
82 WarFoundryLoader.RegisterRequirementFactory(mockFactory1); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
83 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID), Is.EqualTo(mockFactory1)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
84 MockRequirementFactory mockFactory2 = new MockRequirementFactory(factoryID); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
85 WarFoundryLoader.RegisterRequirementFactory(mockFactory2); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
86 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID), Is.Not.EqualTo(mockFactory1)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
87 Assert.That(WarFoundryLoader.GetRequirementFactory(factoryID), Is.EqualTo(mockFactory2)); |
17c5030485dc
Re #351: Add extensible requirement handling method
IBBoard <dev@ibboard.co.uk>
parents:
86
diff
changeset
|
88 } |
229
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
89 |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
90 [Test()] |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
91 public void TestRegisteringResourceFiles() |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
92 { |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
93 AbstractWarFoundryLoader loader = WarFoundryLoader.GetDefault(); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
94 loader.RegisterFactory(new MockRaceAndSystemFactory()); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
95 ILoadableObjectSource loadSource = new LoadableObjectSourceResourceSet(typeof(WarFoundryLoader).Assembly, "IBBoard.WarFoundry.data.Empire.race", "IBBoard.WarFoundry.data.SampleSystem.system"); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
96 loader.AddLoadSource(loadSource); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
97 loader.LoadFiles(); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
98 |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
99 try |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
100 { |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
101 Assert.That(loader.GetGameSystems(), Has.Length(1)); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
102 GameSystem gameSystem = loader.GetGameSystems()[0]; |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
103 Assert.That(loader.GetRaces(gameSystem), Has.Length(1)); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
104 } |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
105 finally |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
106 { |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
107 loader.RemoveLoadSource(loadSource); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
108 loader.UnregisterFactory(GetSystemFactory()); |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
109 } |
6ec46f3db2d4
Re #419: Remove assumptions of a file-based install
IBBoard <dev@ibboard.co.uk>
parents:
228
diff
changeset
|
110 } |
0 | 111 |
9 | 112 private AbstractNativeWarFoundryFactory GetSystemFactory() |
0 | 113 { |
9 | 114 if (sysFactory == null) |
0 | 115 { |
9 | 116 sysFactory = new MockSystemFactory(); |
0 | 117 } |
118 | |
9 | 119 return sysFactory; |
0 | 120 } |
121 } | |
122 } |