diff options
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/CodeTools/Tests/CompilerTest.cs | 116 |
1 files changed, 45 insertions, 71 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Tests/CompilerTest.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Tests/CompilerTest.cs index 7701605..938cb2e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Tests/CompilerTest.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Tests/CompilerTest.cs | |||
@@ -101,6 +101,36 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests | |||
101 | } | 101 | } |
102 | } | 102 | } |
103 | 103 | ||
104 | private CompilerResults CompileScript( | ||
105 | string input, out Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap) | ||
106 | { | ||
107 | m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll"); | ||
108 | |||
109 | CSCodeGenerator cg = new CSCodeGenerator(); | ||
110 | string output = cg.Convert(input); | ||
111 | |||
112 | output = Compiler.CreateCSCompilerScript(output, "script1", typeof(ScriptBaseClass).FullName, null); | ||
113 | // System.Console.WriteLine(output); | ||
114 | |||
115 | positionMap = cg.PositionMap; | ||
116 | |||
117 | CompilerResults compilerResults = m_CSCodeProvider.CompileAssemblyFromSource(m_compilerParameters, output); | ||
118 | |||
119 | // foreach (KeyValuePair<int, int> key in positionMap.Keys) | ||
120 | // { | ||
121 | // KeyValuePair<int, int> val = positionMap[key]; | ||
122 | // | ||
123 | // System.Console.WriteLine("{0},{1} => {2},{3}", key.Key, key.Value, val.Key, val.Value); | ||
124 | // } | ||
125 | // | ||
126 | // foreach (CompilerError compErr in m_compilerResults.Errors) | ||
127 | // { | ||
128 | // System.Console.WriteLine("Error: {0},{1} => {2}", compErr.Line, compErr.Column, compErr); | ||
129 | // } | ||
130 | |||
131 | return compilerResults; | ||
132 | } | ||
133 | |||
104 | /// <summary> | 134 | /// <summary> |
105 | /// Test that line number errors are resolved as expected when preceding code contains a jump. | 135 | /// Test that line number errors are resolved as expected when preceding code contains a jump. |
106 | /// </summary> | 136 | /// </summary> |
@@ -109,9 +139,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests | |||
109 | { | 139 | { |
110 | TestHelpers.InMethod(); | 140 | TestHelpers.InMethod(); |
111 | 141 | ||
112 | m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll"); | 142 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap; |
113 | 143 | ||
114 | string input = @"default | 144 | CompilerResults compilerResults = CompileScript( |
145 | @"default | ||
115 | { | 146 | { |
116 | state_entry() | 147 | state_entry() |
117 | { | 148 | { |
@@ -119,33 +150,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests | |||
119 | @l; | 150 | @l; |
120 | i = 1; | 151 | i = 1; |
121 | } | 152 | } |
122 | }"; | 153 | }", out positionMap); |
123 | |||
124 | CSCodeGenerator cg = new CSCodeGenerator(); | ||
125 | string output = cg.Convert(input); | ||
126 | |||
127 | output = Compiler.CreateCSCompilerScript(output, "script1", typeof(ScriptBaseClass).FullName, null); | ||
128 | // System.Console.WriteLine(output); | ||
129 | |||
130 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap = cg.PositionMap; | ||
131 | |||
132 | m_compilerResults = m_CSCodeProvider.CompileAssemblyFromSource(m_compilerParameters, output); | ||
133 | |||
134 | // foreach (KeyValuePair<int, int> key in positionMap.Keys) | ||
135 | // { | ||
136 | // KeyValuePair<int, int> val = positionMap[key]; | ||
137 | // | ||
138 | // System.Console.WriteLine("{0},{1} => {2},{3}", key.Key, key.Value, val.Key, val.Value); | ||
139 | // } | ||
140 | // | ||
141 | // foreach (CompilerError compErr in m_compilerResults.Errors) | ||
142 | // { | ||
143 | // System.Console.WriteLine("Error: {0},{1} => {2}", compErr.Line, compErr.Column, compErr); | ||
144 | // } | ||
145 | 154 | ||
146 | Assert.AreEqual( | 155 | Assert.AreEqual( |
147 | new KeyValuePair<int, int>(7, 9), | 156 | new KeyValuePair<int, int>(7, 9), |
148 | positionMap[new KeyValuePair<int, int>(m_compilerResults.Errors[0].Line, m_compilerResults.Errors[0].Column)]); | 157 | positionMap[new KeyValuePair<int, int>(compilerResults.Errors[0].Line, compilerResults.Errors[0].Column)]); |
149 | } | 158 | } |
150 | 159 | ||
151 | /// <summary> | 160 | /// <summary> |
@@ -157,41 +166,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests | |||
157 | { | 166 | { |
158 | TestHelpers.InMethod(); | 167 | TestHelpers.InMethod(); |
159 | 168 | ||
160 | m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll"); | 169 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap; |
161 | 170 | ||
162 | string input = @"default | 171 | CompilerResults compilerResults = CompileScript( |
172 | @"default | ||
163 | { | 173 | { |
164 | state_entry() | 174 | state_entry() |
165 | { | 175 | { |
166 | integer y = x + 3; | 176 | integer y = x + 3; |
167 | } | 177 | } |
168 | }"; | 178 | }", out positionMap); |
169 | |||
170 | CSCodeGenerator cg = new CSCodeGenerator(); | ||
171 | string output = cg.Convert(input); | ||
172 | |||
173 | output = Compiler.CreateCSCompilerScript(output, "script1", typeof(ScriptBaseClass).FullName, null); | ||
174 | // System.Console.WriteLine(output); | ||
175 | |||
176 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap = cg.PositionMap; | ||
177 | |||
178 | m_compilerResults = m_CSCodeProvider.CompileAssemblyFromSource(m_compilerParameters, output); | ||
179 | // | ||
180 | // foreach (KeyValuePair<int, int> key in positionMap.Keys) | ||
181 | // { | ||
182 | // KeyValuePair<int, int> val = positionMap[key]; | ||
183 | // | ||
184 | // System.Console.WriteLine("{0},{1} => {2},{3}", key.Key, key.Value, val.Key, val.Value); | ||
185 | // } | ||
186 | // | ||
187 | // foreach (CompilerError compErr in m_compilerResults.Errors) | ||
188 | // { | ||
189 | // System.Console.WriteLine("Error: {0},{1} => {2}", compErr.Line, compErr.Column, compErr); | ||
190 | // } | ||
191 | 179 | ||
192 | Assert.AreEqual( | 180 | Assert.AreEqual( |
193 | new KeyValuePair<int, int>(5, 21), | 181 | new KeyValuePair<int, int>(5, 21), |
194 | positionMap[new KeyValuePair<int, int>(m_compilerResults.Errors[0].Line, m_compilerResults.Errors[0].Column)]); | 182 | positionMap[new KeyValuePair<int, int>(compilerResults.Errors[0].Line, compilerResults.Errors[0].Column)]); |
195 | } | 183 | } |
196 | 184 | ||
197 | /// <summary> | 185 | /// <summary> |
@@ -203,9 +191,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests | |||
203 | { | 191 | { |
204 | TestHelpers.InMethod(); | 192 | TestHelpers.InMethod(); |
205 | 193 | ||
206 | m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll"); | 194 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> positionMap; |
207 | 195 | ||
208 | string input = @"string s = "" a string""; | 196 | CompilerResults compilerResults = CompileScript( |
197 | @"string s = "" a string""; | ||
209 | 198 | ||
210 | default | 199 | default |
211 | { | 200 | { |
@@ -215,24 +204,9 @@ default | |||
215 | string tmp = (string) gAvatarKey + s; | 204 | string tmp = (string) gAvatarKey + s; |
216 | llSay(0, tmp); | 205 | llSay(0, tmp); |
217 | } | 206 | } |
218 | }"; | 207 | }", out positionMap); |
219 | |||
220 | // System.Console.WriteLine(input); | ||
221 | CSCodeGenerator cg = new CSCodeGenerator(); | ||
222 | string output = cg.Convert(input); | ||
223 | |||
224 | output = Compiler.CreateCSCompilerScript(output, "script1", typeof(ScriptBaseClass).FullName, null); | ||
225 | // System.Console.WriteLine(output); | ||
226 | |||
227 | m_compilerResults = m_CSCodeProvider.CompileAssemblyFromSource(m_compilerParameters, output); | ||
228 | |||
229 | System.Console.WriteLine("ERRORS: {0}", m_compilerResults.Errors.Count); | ||
230 | foreach (CompilerError compErr in m_compilerResults.Errors) | ||
231 | { | ||
232 | System.Console.WriteLine("Error: {0}", compErr); | ||
233 | } | ||
234 | 208 | ||
235 | Assert.AreEqual(0, m_compilerResults.Errors.Count); | 209 | Assert.AreEqual(0, compilerResults.Errors.Count); |
236 | } | 210 | } |
237 | } | 211 | } |
238 | } \ No newline at end of file | 212 | } \ No newline at end of file |