Browse Source
- Added Unit Tests git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5006 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
10 changed files with 636 additions and 90 deletions
@ -0,0 +1,323 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Siegfried Pammer" email="siegfriedpammer@gmail.com" />
|
||||||
|
// <version>$Revision$</version>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
|
||||||
|
using System; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
namespace ICSharpCode.XamlBinding.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class GetMarkupExtensionAtPositionTests |
||||||
|
{ |
||||||
|
[Test] |
||||||
|
public void EmptyTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 8 |
||||||
|
}; |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 5, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void SimpleTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type Button}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 15 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("Button") { StartOffset = 8 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 10, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void SimplePosArgTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type Button, Button2}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 24 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("Button") { StartOffset = 8 }); |
||||||
|
info.PositionalArguments.Add(new AttributeValue("Button2") { StartOffset = 16 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 23, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void SimpleNamedArgTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type Type=Button}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 20 |
||||||
|
}; |
||||||
|
|
||||||
|
info.NamedArguments.Add("Type", new AttributeValue("Button") { StartOffset = 13 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 0, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void SimpleNamedArgTest1() |
||||||
|
{ |
||||||
|
string markup = "{x:Type Type=Button, a=b}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 25 |
||||||
|
}; |
||||||
|
|
||||||
|
info.NamedArguments.Add("Type", new AttributeValue("Button") { StartOffset = 13 }); |
||||||
|
info.NamedArguments.Add("a", new AttributeValue("b") { StartOffset = 23 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 20, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void PosAndNamedArgTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type xy, Type=Button, a=b}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 29 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("xy") { StartOffset = 8 }); |
||||||
|
|
||||||
|
info.NamedArguments.Add("Type", new AttributeValue("Button") { StartOffset = 17 }); |
||||||
|
info.NamedArguments.Add("a", new AttributeValue("b") { StartOffset = 27 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 29, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void MissingColonTest() |
||||||
|
{ |
||||||
|
string markup = "{x:Type xy Type=Button, a=b}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 28 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("xy") { StartOffset = 8 }); |
||||||
|
|
||||||
|
info.NamedArguments.Add("Type", new AttributeValue("Button") { StartOffset = 16 }); |
||||||
|
info.NamedArguments.Add("a", new AttributeValue("b") { StartOffset = 26 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void MissingColonTest2() |
||||||
|
{ |
||||||
|
string markup = "{x:Type xy Type=Button a=b}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "x:Type", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 27 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("xy") { StartOffset = 8 }); |
||||||
|
|
||||||
|
info.NamedArguments.Add("Type", new AttributeValue("Button") { StartOffset = 16 }); |
||||||
|
info.NamedArguments.Add("a", new AttributeValue("b") { StartOffset = 25 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void NestedTest1() |
||||||
|
{ |
||||||
|
string markup = "{bla {bla2}}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 12 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue(new MarkupExtensionInfo() { ExtensionType = "bla2", StartOffset = 5, EndOffset = 11 }) { StartOffset = 5 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void NestedTest2() |
||||||
|
{ |
||||||
|
string markup = "{bla a, {bla2}}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 15 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("a") { StartOffset = 5 }); |
||||||
|
info.PositionalArguments.Add( |
||||||
|
new AttributeValue( |
||||||
|
new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla2", |
||||||
|
StartOffset = 8, |
||||||
|
EndOffset = 14 |
||||||
|
} |
||||||
|
) { |
||||||
|
StartOffset = 8 |
||||||
|
} |
||||||
|
); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void NestedTest3() |
||||||
|
{ |
||||||
|
string markup = "{bla a, {bla2}, b, {bla3 {a}, b}}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 33 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("a") { StartOffset = 5 }); |
||||||
|
info.PositionalArguments.Add( |
||||||
|
new AttributeValue( |
||||||
|
new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla2", |
||||||
|
StartOffset = 8, |
||||||
|
EndOffset = 14 |
||||||
|
} |
||||||
|
) { |
||||||
|
StartOffset = 8 |
||||||
|
} |
||||||
|
); |
||||||
|
info.PositionalArguments.Add(new AttributeValue("b") { StartOffset = 16 }); |
||||||
|
|
||||||
|
var nested2 = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla3", |
||||||
|
StartOffset = 19, |
||||||
|
EndOffset = 32 |
||||||
|
}; |
||||||
|
|
||||||
|
nested2.PositionalArguments.Add( |
||||||
|
new AttributeValue( |
||||||
|
new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "a", |
||||||
|
StartOffset = 25, |
||||||
|
EndOffset = 28 |
||||||
|
} |
||||||
|
) { |
||||||
|
StartOffset = 25 |
||||||
|
} |
||||||
|
); |
||||||
|
|
||||||
|
nested2.PositionalArguments.Add(new AttributeValue("b") { StartOffset = 30 }); |
||||||
|
|
||||||
|
info.PositionalArguments.Add( |
||||||
|
new AttributeValue(nested2) { |
||||||
|
StartOffset = 19 |
||||||
|
} |
||||||
|
); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void NestedTest4() |
||||||
|
{ |
||||||
|
string markup = "{bla a, x={bla3 {a}, b={c}, d=e}, y=z}"; |
||||||
|
|
||||||
|
MarkupExtensionInfo info = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla", |
||||||
|
StartOffset = 0, |
||||||
|
EndOffset = 38 |
||||||
|
}; |
||||||
|
|
||||||
|
info.PositionalArguments.Add(new AttributeValue("a") { StartOffset = 5 }); |
||||||
|
|
||||||
|
//x={bla3 {a}, b={c}, d=e}
|
||||||
|
|
||||||
|
MarkupExtensionInfo inner = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "bla3", |
||||||
|
StartOffset = 10, |
||||||
|
EndOffset = 32 |
||||||
|
}; |
||||||
|
|
||||||
|
MarkupExtensionInfo smallInner = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "a", |
||||||
|
StartOffset = 16, |
||||||
|
EndOffset = 19 |
||||||
|
}; |
||||||
|
|
||||||
|
inner.PositionalArguments.Add(new AttributeValue(smallInner) { StartOffset = 16 }); |
||||||
|
|
||||||
|
MarkupExtensionInfo smallInner2 = new MarkupExtensionInfo() { |
||||||
|
ExtensionType = "c", |
||||||
|
StartOffset = 23, |
||||||
|
EndOffset = 26 |
||||||
|
}; |
||||||
|
|
||||||
|
inner.NamedArguments.Add("b", new AttributeValue(smallInner2) { StartOffset = 23 }); |
||||||
|
|
||||||
|
inner.NamedArguments.Add("d", new AttributeValue("e") { StartOffset = 30 }); |
||||||
|
|
||||||
|
info.NamedArguments.Add("x", new AttributeValue(inner) { StartOffset = 10 }); |
||||||
|
|
||||||
|
info.NamedArguments.Add("y", new AttributeValue("z") { StartOffset = 36 }); |
||||||
|
|
||||||
|
RunParseTest(markup, info); |
||||||
|
RunDetectionTest(markup, 9, info); |
||||||
|
RunDetectionTest(markup, 11, inner); |
||||||
|
RunDetectionTest(markup, 17, smallInner); |
||||||
|
RunDetectionTest(markup, 19, inner); |
||||||
|
RunDetectionTest(markup, 32, info); |
||||||
|
} |
||||||
|
|
||||||
|
static void RunDetectionTest(string markup, int offset, MarkupExtensionInfo expectedResult) |
||||||
|
{ |
||||||
|
MarkupExtensionInfo data = MarkupExtensionParser.Parse(markup); |
||||||
|
MarkupExtensionInfo result = Utils.GetMarkupExtensionAtPosition(data, offset); |
||||||
|
|
||||||
|
Assert.AreEqual(expectedResult, result); |
||||||
|
} |
||||||
|
|
||||||
|
static void RunParseTest(string markup, MarkupExtensionInfo expectedResult) |
||||||
|
{ |
||||||
|
MarkupExtensionInfo data = MarkupExtensionParser.Parse(markup); |
||||||
|
|
||||||
|
Assert.AreEqual(expectedResult, data); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue