mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
2.8 KiB
135 lines
2.8 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
|
|
namespace ILSpy.BamlDecompiler.Tests |
|
{ |
|
/* |
|
[TestFixture] |
|
public class TestRunner |
|
{ |
|
[Test] |
|
public void Simple() |
|
{ |
|
RunTest("cases/simple"); |
|
} |
|
|
|
[Test] |
|
public void SimpleDictionary() |
|
{ |
|
RunTest("cases/simpledictionary"); |
|
} |
|
|
|
[Test] |
|
public void Resources() |
|
{ |
|
RunTest("cases/resources"); |
|
} |
|
|
|
[Test] |
|
[Ignore("Broken on AppVeyor CI (extra x:ConnectionId attribute)")] |
|
public void SimpleNames() |
|
{ |
|
RunTest("cases/simplenames"); |
|
} |
|
|
|
[Test] |
|
public void AvalonDockBrushes() |
|
{ |
|
RunTest("cases/avalondockbrushes"); |
|
} |
|
|
|
[Test] |
|
public void AvalonDockCommon() |
|
{ |
|
RunTest("cases/avalondockcommon"); |
|
} |
|
|
|
[Test] |
|
public void AttachedEvent() |
|
{ |
|
RunTest("cases/attachedevent"); |
|
} |
|
|
|
[Test] |
|
public void Dictionary1() |
|
{ |
|
RunTest("cases/dictionary1"); |
|
} |
|
|
|
[Test] |
|
public void MarkupExtension() |
|
{ |
|
RunTest("cases/markupextension"); |
|
} |
|
|
|
[Test] |
|
public void SimplePropertyElement() |
|
{ |
|
RunTest("cases/simplepropertyelement"); |
|
} |
|
|
|
[Test] |
|
public void Issue445() |
|
{ |
|
RunTest("cases/issue445"); |
|
} |
|
|
|
[Test] |
|
public void NamespacePrefix() |
|
{ |
|
RunTest("cases/namespaceprefix"); |
|
} |
|
|
|
[Test] |
|
public void EscapeSequence() |
|
{ |
|
RunTest("cases/escapesequence"); |
|
} |
|
|
|
#region RunTest |
|
void RunTest(string name) |
|
{ |
|
RunTest(name, typeof(TestRunner).Assembly.Location, Path.Combine("..\\..\\Tests", name + ".xaml")); |
|
} |
|
|
|
void RunTest(string name, string asmPath, string sourcePath) |
|
{ |
|
var resolver = new DefaultAssemblyResolver(); |
|
var assembly = AssemblyDefinition.ReadAssembly(asmPath, new ReaderParameters { AssemblyResolver = resolver }); |
|
Resource res = assembly.MainModule.Resources.First(); |
|
Stream bamlStream = LoadBaml(res, name + ".baml"); |
|
Assert.IsNotNull(bamlStream); |
|
XDocument document = BamlResourceEntryNode.LoadIntoDocument(resolver, assembly, bamlStream); |
|
|
|
CodeAssert.AreEqual(File.ReadAllText(sourcePath), document.ToString()); |
|
} |
|
|
|
Stream LoadBaml(Resource res, string name) |
|
{ |
|
EmbeddedResource er = res as EmbeddedResource; |
|
if (er != null) { |
|
Stream s = er.GetResourceStream(); |
|
s.Position = 0; |
|
ResourceReader reader; |
|
try { |
|
reader = new ResourceReader(s); |
|
} |
|
catch (ArgumentException) { |
|
return null; |
|
} |
|
foreach (DictionaryEntry entry in reader.Cast<DictionaryEntry>().OrderBy(e => e.Key.ToString())) { |
|
if (entry.Key.ToString() == name) { |
|
if (entry.Value is Stream) |
|
return (Stream)entry.Value; |
|
if (entry.Value is byte[]) |
|
return new MemoryStream((byte[])entry.Value); |
|
} |
|
} |
|
} |
|
|
|
return null; |
|
} |
|
#endregion |
|
}*/ |
|
}
|
|
|