Mercurial > repos > IBBoard.Ini.Tests
annotate IniFileReaderTest.cs @ 1:c2a0d074b3b5
Re #7 - Test for INI parsing
* Add key length checking to file parsing to ensure section is correctly parsed
* Add tests for multi-line section parsing
* Add test for line parser parsing padded line
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Wed, 14 Jan 2009 19:54:00 +0000 |
parents | ada654b0648c |
children | f880d41804d6 |
rev | line source |
---|---|
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 // This file (IniFileReaderTest.cs) is a part of the IBBoard.Ini.Tests library and is copyright 2009 IBBoard. |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 // |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
3 // The file and the library/program it is in are licensed under the GNU LGPL license. Please see COPYING.LGPL for more information and the full license. |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using System; |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using System.IO; |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 using NUnit.Framework; |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 namespace IBBoard.Ini |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 [TestFixture()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 public class IniFileReaderTest |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 public void TestIniFileReaderReturnsEmptyObjectForEmptyIniText() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 IniFile file = IniFileReader.ReadFile(""); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 Assert.AreEqual(0, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniText() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 IniFile file = IniFileReader.ReadFile("[ASection]"); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
26 Assert.AreEqual(1, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
28 Assert.IsNotNull(file["ASection"]); |
1 | 29 Assert.AreEqual(0, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniTextWithContent() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 IniFile file = IniFileReader.ReadFile("[ASection]\nsomething=fibble"); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 Assert.AreEqual(1, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 Assert.IsNotNull(file["ASection"]); |
1 | 40 Assert.AreEqual(1, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
44 [Test()] |
1 | 45 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniTextWithMultiLineContent() |
46 { | |
47 IniFile file = IniFileReader.ReadFile("[ASection]\nsomething=fibble\nfobble_key=foo\nabcde=fghij\nfoo9=bar2"); | |
48 Assert.AreEqual(1, file.Sections.Length); | |
49 Assert.IsTrue(file.HasSection("ASection")); | |
50 IniSection section = file["ASection"]; | |
51 Assert.IsNotNull(section); | |
52 Assert.AreEqual(4, section.Keys.Length); | |
53 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); | |
54 | |
55 string[] keys = new string[]{"something", "fobble_key", "abcde", "foo9"}; | |
56 | |
57 foreach (string key in keys) | |
58 { | |
59 bool found = false; | |
60 | |
61 foreach (string sectionKey in section.Keys) | |
62 { | |
63 if (key == sectionKey) | |
64 { | |
65 found = true; | |
66 break; | |
67 } | |
68 } | |
69 | |
70 Assert.IsTrue(found, "Did not find "+key); | |
71 } | |
72 } | |
73 | |
74 [Test()] | |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
75 public void TestIniFileReaderContainsExpectedSectionForTwoSectionIniTextWithContent() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
76 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
77 IniFile file = IniFileReader.ReadFile("[ASection]\nsomething=fibble\n[BSection]\nsomethingElse=fibble"); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
78 Assert.AreEqual(2, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
79 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
80 Assert.IsNotNull(file["ASection"]); |
1 | 81 Assert.AreEqual(1, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
82 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
83 Assert.IsTrue(file.HasSection("BSection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
84 Assert.IsNotNull(file["BSection"]); |
1 | 85 Assert.AreEqual(1, file["BSection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
86 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["BSection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
87 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
88 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
89 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
90 public void TestIniFileReaderReturnsEmptyObjectForEmptyIniFile() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
91 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
92 IniFile file = IniFileReader.ReadFile(new FileInfo("EmptyFile.ini")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
93 Assert.AreEqual(0, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
94 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
95 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
96 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
97 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
98 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniFile() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
99 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
100 IniFile file = IniFileReader.ReadFile(new FileInfo("SingleSectionSingleLine.ini")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
101 Assert.AreEqual(1, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
102 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
103 Assert.IsNotNull(file["ASection"]); |
1 | 104 Assert.AreEqual(0, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
105 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
106 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
107 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
108 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
109 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniFileWithContent() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
110 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
111 IniFile file = IniFileReader.ReadFile(new FileInfo("SingleSectionWithContent.ini")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
112 Assert.AreEqual(1, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
113 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
114 Assert.IsNotNull(file["ASection"]); |
1 | 115 Assert.AreEqual(1, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
116 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
117 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
118 |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
119 [Test()] |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
120 public void TestIniFileReaderContainsExpectedSectionForTwoSectionIniFileWithContent() |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
121 { |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
122 IniFile file = IniFileReader.ReadFile(new FileInfo("DoubleSectionWithContent.ini")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
123 Assert.AreEqual(2, file.Sections.Length); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
124 Assert.IsTrue(file.HasSection("ASection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
125 Assert.IsNotNull(file["ASection"]); |
1 | 126 Assert.AreEqual(1, file["ASection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
127 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
128 Assert.IsTrue(file.HasSection("BSection")); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
129 Assert.IsNotNull(file["BSection"]); |
1 | 130 Assert.AreEqual(1, file["BSection"].Keys.Length); |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
131 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["BSection"]); |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
132 } |
1 | 133 |
134 [Test()] | |
135 public void TestIniFileReaderContainsExpectedSectionForSingleSectionIniFileWithMultiLineContent() | |
136 { | |
137 IniFile file = IniFileReader.ReadFile(new FileInfo("SingleSectionWithMultiLineContent.ini")); | |
138 Assert.AreEqual(1, file.Sections.Length); | |
139 Assert.IsTrue(file.HasSection("ASection")); | |
140 IniSection section = file["ASection"]; | |
141 Assert.IsNotNull(section); | |
142 Assert.AreEqual(4, section.Keys.Length); | |
143 Assert.IsNotInstanceOfType(typeof(NonExistantIniSection), file["ASection"]); | |
144 | |
145 string[] keys = new string[]{"something", "fobble_key", "abcde", "foo9"}; | |
146 | |
147 foreach (string key in keys) | |
148 { | |
149 bool found = false; | |
150 | |
151 foreach (string sectionKey in section.Keys) | |
152 { | |
153 if (key == sectionKey) | |
154 { | |
155 found = true; | |
156 break; | |
157 } | |
158 } | |
159 | |
160 Assert.IsTrue(found, "Did not find "+key); | |
161 } | |
162 } | |
0
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
163 } |
ada654b0648c
Re #7 - add IBBoard.Ini test\n * Add initial tests
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
164 } |