Skip to content

Commit ff78e65

Browse files
committed
Unit test for anonymous structures, and more complex unit test for function types with subtypes.
1 parent c561fb7 commit ff78e65

File tree

4 files changed

+68
-4
lines changed

4 files changed

+68
-4
lines changed

Tests/External/Plugins/ASCompletion.Tests/ASCompletion.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
<EmbeddedResource Include="Test Files\generated\haxe\ImplementInterfaceNoPublicMember.hx" />
151151
<EmbeddedResource Include="Test Files\generated\haxe\ImplementInterfacePublicMemberBehindPrivate.hx" />
152152
<EmbeddedResource Include="Test Files\completion\as3\SimpleTest.as" />
153+
<EmbeddedResource Include="Test Files\parser\haxe\AnonymousStructuresTest.hx" />
153154
</ItemGroup>
154155
<ItemGroup>
155156
<ProjectReference Include="..\..\..\..\External\Plugins\AS2Context\AS2Context.csproj">

Tests/External/Plugins/ASCompletion.Tests/Model/ASFileParserTests.cs

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
namespace ASCompletion.Model
99
{
10-
[TestFixture]
1110
class ASFileParserTests
1211
{
12+
[TestFixture]
1313
public class As3
1414
{
1515
[Test]
@@ -70,6 +70,7 @@ public void ParseFile_OverrideFunction()
7070

7171
}
7272

73+
[TestFixture]
7374
public class Haxe
7475
{
7576
[Test]
@@ -1057,6 +1058,37 @@ public void ParseFile_ImportAliases()
10571058
}
10581059
}
10591060

1061+
[Test]
1062+
public void ParseFile_AnonymousStructures()
1063+
{
1064+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.parser.haxe.AnonymousStructuresTest.hx"))
1065+
{
1066+
var srcModel = new FileModel(resourceFile.DestinationFile);
1067+
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
1068+
var model = ASFileParser.ParseFile(srcModel);
1069+
1070+
Assert.AreEqual(1, model.Classes.Count);
1071+
1072+
var classModel = model.Classes[0];
1073+
1074+
Assert.AreEqual(2, classModel.Members.Count);
1075+
1076+
var member = classModel.Members[0];
1077+
Assert.AreEqual("start", member.Name);
1078+
Assert.AreEqual(1, member.LineFrom);
1079+
Assert.AreEqual(1, member.LineTo);
1080+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1081+
Assert.AreEqual("{x:Int, y:Int}", member.Type);
1082+
1083+
member = classModel.Members[1];
1084+
Assert.AreEqual("target", member.Name);
1085+
Assert.AreEqual(2, member.LineFrom);
1086+
Assert.AreEqual(2, member.LineTo);
1087+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1088+
Assert.AreEqual("{x:Int, y:Int}", member.Type);
1089+
}
1090+
}
1091+
10601092
[Test]
10611093
public void ParseFile_FunctionTypes()
10621094
{
@@ -1075,12 +1107,14 @@ public void ParseFile_FunctionTypes()
10751107
Assert.AreEqual("functionType", member.Name);
10761108
Assert.AreEqual(2, member.LineFrom);
10771109
Assert.AreEqual(2, member.LineTo);
1110+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
10781111
Assert.AreEqual("Dynamic->Dynamic", member.Type);
10791112

10801113
member = model.Members[2];
10811114
Assert.AreEqual("functionType2", member.Name);
10821115
Assert.AreEqual(3, member.LineFrom);
10831116
Assert.AreEqual(3, member.LineTo);
1117+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
10841118
Assert.AreEqual("Int->Int->Int", member.Type);
10851119
}
10861120
}
@@ -1099,19 +1133,43 @@ public void ParseFile_FunctionTypesWithSubTypes()
10991133
Context.ASContext.Context = context;
11001134
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
11011135

1102-
Assert.AreEqual(3, model.Members.Count);
1136+
Assert.AreEqual(4, model.Members.Count);
11031137

11041138
var member = model.Members[0];
1139+
Assert.AreEqual("functionTypesWithSubTypes", member.Name);
1140+
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
1141+
Assert.AreEqual(3, member.Parameters.Count);
1142+
var arg = member.Parameters[0];
1143+
Assert.AreEqual("functionTypeArg", arg.Name);
1144+
Assert.AreEqual("(Dynamic->Dynamic)->Dynamic", arg.Type);
1145+
arg = member.Parameters[1];
1146+
Assert.AreEqual("functionTypeArg2", arg.Name);
1147+
Assert.AreEqual("(Dynamic->Dynamic)->(Int->Int)", arg.Type);
1148+
Assert.AreEqual("null", arg.Value);
1149+
arg = member.Parameters[2];
1150+
Assert.AreEqual("test2", arg.Name);
1151+
Assert.AreEqual("String", arg.Type);
1152+
1153+
member = model.Members[1];
11051154
Assert.AreEqual("functionType", member.Name);
11061155
Assert.AreEqual(2, member.LineFrom);
11071156
Assert.AreEqual(2, member.LineTo);
1157+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
11081158
Assert.AreEqual("(Dynamic->Dynamic)->Dynamic", member.Type);
11091159

1110-
member = model.Members[1];
1160+
member = model.Members[2];
11111161
Assert.AreEqual("functionType2", member.Name);
11121162
Assert.AreEqual(3, member.LineFrom);
11131163
Assert.AreEqual(3, member.LineTo);
1164+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
11141165
Assert.AreEqual("((Dynamic->Dynamic)->Int->)Int", member.Type);
1166+
1167+
member = model.Members[3];
1168+
Assert.AreEqual("functionType3", member.Name);
1169+
Assert.AreEqual(4, member.LineFrom);
1170+
Assert.AreEqual(4, member.LineTo);
1171+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1172+
Assert.AreEqual("(Dynamic->Dynamic)->(Int->Int)", member.Type);
11151173
}
11161174
}
11171175

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Path {
2+
var start : { x : Int, y : Int };
3+
var target : { x : Int, y : Int };
4+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
public function new()
1+
public function functionTypesWithSubTypes(functionTypeArg:(Dynamic->Dynamic)->Dynamic, functionTypeArg2:(Dynamic->Dynamic)->(Int->Int) = null, test2:String):((Dynamic->Dynamic)->Int->)Int
22
{
33
var functionType:(Dynamic->Dynamic)->Dynamic;
44
var functionType2:((Dynamic->Dynamic)->Int->)Int;
5+
var functionType3:(Dynamic->Dynamic)->(Int->Int);
56
}

0 commit comments

Comments
 (0)