annotate API/Factories/Xml/WarFoundryXmlFactoryTests.cs @ 90:5d19fee8e9dc

Re #253: Allow multiple data files in a single zip * Differentiate in simple cache by concating strings * Add extra tests for .race file and non-default names
author IBBoard <dev@ibboard.co.uk>
date Sun, 27 Feb 2011 20:33:12 +0000
parents 90dee8d781ee
children 3c2c108a2f08
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
87
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 using System;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 using NUnit.Framework;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 using System.IO;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System.Collections.Generic;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using IBBoard.WarFoundry.API.Objects;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using NUnit.Framework.SyntaxHelpers;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 namespace IBBoard.WarFoundry.API.Factories.Xml
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 {
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 [TestFixture()]
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 public class WarFoundryXmlFactoryTests
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 {
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 [Test()]
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 public void TestFactoryHandlesMultipleFilesWithOldNamesInOneSystemZip()
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 {
90
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
16 EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader();
89
90dee8d781ee Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 87
diff changeset
17 WarFoundryLoader.SetDefault(loader);
90
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
18 WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory();
89
90dee8d781ee Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 87
diff changeset
19 loader.RegisterFactory(factory);
90dee8d781ee Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 87
diff changeset
20 ICollection<IWarFoundryObject> objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.system"));
87
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 Assert.That(objs, Has.Count(2));
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 int raceCount = 0;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 int systemCount = 0;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 foreach (IWarFoundryObject obj in objs)
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 {
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 if (obj is Race)
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 {
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 raceCount++;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 }
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 else if (obj is GameSystem)
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 {
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 systemCount++;
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 }
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 }
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 Assert.That(raceCount, Is.EqualTo(1));
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 Assert.That(systemCount, Is.EqualTo(1));
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 }
90
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
40
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
41 [Test()]
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
42 public void TestFactoryHandlesMultipleFilesWithOldNamesInOneRaceZip()
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
43 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
44 EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader();
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
45 WarFoundryLoader.SetDefault(loader);
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
46 WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory();
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
47 loader.RegisterFactory(factory);
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
48 ICollection<IWarFoundryObject> objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Test.race"));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
49 Assert.That(objs, Has.Count(2));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
50 int raceCount = 0;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
51 int systemCount = 0;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
52
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
53 foreach (IWarFoundryObject obj in objs)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
54 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
55 if (obj is Race)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
56 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
57 raceCount++;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
58 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
59 else if (obj is GameSystem)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
60 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
61 systemCount++;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
62 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
63 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
64
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
65 Assert.That(raceCount, Is.EqualTo(1));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
66 Assert.That(systemCount, Is.EqualTo(1));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
67 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
68
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
69 [Test()]
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
70 public void TestFactoryHandlesMultipleFilesWithMultipleNewNamesInOneSystemZip()
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
71 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
72 EventListeningWarFoundryLoader loader = new EventListeningWarFoundryLoader();
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
73 WarFoundryLoader.SetDefault(loader);
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
74 WarFoundryXmlFactory factory = WarFoundryXmlFactory.GetFactory();
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
75 loader.RegisterFactory(factory);
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
76 ICollection<IWarFoundryObject> objs = factory.CreateObjectsFromFile(new FileInfo("testdata/multifile-zips/Multipack.system"));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
77 Assert.That(objs, Has.Count(4));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
78 int raceCount = 0;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
79 int systemCount = 0;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
80
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
81 foreach (IWarFoundryObject obj in objs)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
82 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
83 if (obj is Race)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
84 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
85 raceCount++;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
86 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
87 else if (obj is GameSystem)
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
88 {
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
89 systemCount++;
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
90 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
91 }
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
92
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
93 Assert.That(raceCount, Is.EqualTo(2));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
94 Assert.That(systemCount, Is.EqualTo(2));
5d19fee8e9dc Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents: 89
diff changeset
95 }
87
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
96 }
5c04db41d643 Re #253: Allow multiple data files in a single zip
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
97 }