Skip to content

Commit cc4b7a3

Browse files
committed
More work on Haxe tests.
1 parent a77f3d1 commit cc4b7a3

File tree

6 files changed

+231
-115
lines changed

6 files changed

+231
-115
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@
126126
<EmbeddedResource Include="Test Files\haxe\InterfaceTest.hx" />
127127
<EmbeddedResource Include="Test Files\haxe\PrivateClassTest.hx" />
128128
<EmbeddedResource Include="Test Files\haxe\RegExTest.hx" />
129+
<EmbeddedResource Include="Test Files\haxe\ImportAliasTest.hx" />
130+
<EmbeddedResource Include="Test Files\haxe\ComplexClassTest.hx" />
129131
</ItemGroup>
130132
<ItemGroup>
131133
<ProjectReference Include="..\..\..\..\External\Plugins\AS2Context\AS2Context.csproj">

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

Lines changed: 181 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -416,123 +416,193 @@ public void ParseFile_Generics()
416416
Assert.AreEqual("V", arg.Type);
417417
}
418418
}
419-
}
419+
[Ignore("Easy fix, to add")]
420+
public void ParseFile_GenericsWithObjectConstraints()
421+
{
422+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.GenericsObjectConstraintTest.hx"))
423+
{
424+
var srcModel = new FileModel(resourceFile.DestinationFile);
425+
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
426+
var model = ASFileParser.ParseFile(srcModel);
427+
Assert.AreEqual(2, model.Classes.Count);
420428

421-
[Ignore("Easy fix, to add")]
422-
public void ParseFile_GenericsWithObjectConstraints()
423-
{
424-
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.GenericsObjectConstraintTest.hx"))
429+
var objectConstraintGeneric = model.Classes[0];
430+
Assert.AreEqual(2, objectConstraintGeneric.LineFrom);
431+
Assert.AreEqual(11, objectConstraintGeneric.LineTo);
432+
Assert.AreEqual(FlagType.Class, objectConstraintGeneric.Flags & FlagType.Class);
433+
Assert.AreEqual("TestObjectConstraint<T:({},Measurable)>", objectConstraintGeneric.FullName);
434+
Assert.AreEqual("TestObjectConstraint", objectConstraintGeneric.Name);
435+
Assert.AreEqual("<T:({},Measurable)>", objectConstraintGeneric.Template);
436+
Assert.AreEqual(2, objectConstraintGeneric.Members.Count);
437+
var member = objectConstraintGeneric.Members[0];
438+
Assert.AreEqual("test1", member.Name);
439+
Assert.AreEqual(4, member.LineFrom);
440+
Assert.AreEqual(6, member.LineTo);
441+
Assert.AreEqual("T", member.Type);
442+
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
443+
Assert.AreEqual(2, member.Parameters.Count);
444+
var arg = member.Parameters[0];
445+
Assert.AreEqual("expected", arg.Name);
446+
Assert.AreEqual("T", arg.Type);
447+
arg = member.Parameters[1];
448+
Assert.AreEqual("actual", arg.Name);
449+
Assert.AreEqual("T", arg.Type);
450+
member = objectConstraintGeneric.Members[1];
451+
Assert.AreEqual("test2<K:({},Measurable)>", member.FullName);
452+
Assert.AreEqual("test2", member.Name);
453+
Assert.AreEqual("<K:({},Measurable)>", member.Template);
454+
Assert.AreEqual(8, member.LineFrom);
455+
Assert.AreEqual(10, member.LineTo);
456+
Assert.AreEqual("K", member.Type);
457+
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
458+
arg = member.Parameters[0];
459+
Assert.AreEqual("expected", arg.Name);
460+
Assert.AreEqual("K", arg.Type);
461+
arg = member.Parameters[1];
462+
Assert.AreEqual("actual", arg.Name);
463+
Assert.AreEqual("K", arg.Type);
464+
var simpleGeneric = model.Classes[0];
465+
Assert.AreEqual(2, simpleGeneric.LineFrom);
466+
Assert.AreEqual(11, simpleGeneric.LineTo);
467+
Assert.AreEqual(FlagType.Class, simpleGeneric.Flags & FlagType.Class);
468+
Assert.AreEqual("Test<T>", simpleGeneric.FullName);
469+
Assert.AreEqual("Test", simpleGeneric.Name);
470+
Assert.AreEqual("<T>", simpleGeneric.Template);
471+
Assert.AreEqual(2, simpleGeneric.Members.Count);
472+
473+
var fullConstraintGeneric = model.Classes[1];
474+
Assert.AreEqual(13, fullConstraintGeneric.LineFrom);
475+
Assert.AreEqual(22, fullConstraintGeneric.LineTo);
476+
Assert.AreEqual(FlagType.Class, fullConstraintGeneric.Flags & FlagType.Class);
477+
Assert.AreEqual("TestFullConstraint<T:({},Measurable),Z:(Iterable<String>,Measurable)>", fullConstraintGeneric.FullName);
478+
Assert.AreEqual("TestFullConstraint", fullConstraintGeneric.Name);
479+
Assert.AreEqual("<T:({},Measurable),Z:(Iterable<String>,Measurable)>", fullConstraintGeneric.Template);
480+
Assert.AreEqual(2, fullConstraintGeneric.Members.Count);
481+
member = fullConstraintGeneric.Members[0];
482+
Assert.AreEqual("test1", member.Name);
483+
Assert.AreEqual(15, member.LineFrom);
484+
Assert.AreEqual(17, member.LineTo);
485+
Assert.AreEqual("T", member.Type);
486+
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
487+
Assert.AreEqual(2, member.Parameters.Count);
488+
arg = member.Parameters[0];
489+
Assert.AreEqual("expected", arg.Name);
490+
Assert.AreEqual("T", arg.Type);
491+
arg = member.Parameters[1];
492+
Assert.AreEqual("actual", arg.Name);
493+
Assert.AreEqual("Z", arg.Type);
494+
member = fullConstraintGeneric.Members[1];
495+
Assert.AreEqual("test2<K:({},Measurable),V:(Iterable<String>,Measurable)>", member.FullName);
496+
Assert.AreEqual("test2", member.Name);
497+
Assert.AreEqual("<K:({},Measurable),V:(Iterable<String>,Measurable)>", member.Template);
498+
Assert.AreEqual(19, member.LineFrom);
499+
Assert.AreEqual(21, member.LineTo);
500+
Assert.AreEqual("K", member.Type);
501+
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
502+
arg = member.Parameters[0];
503+
Assert.AreEqual("expected", arg.Name);
504+
Assert.AreEqual("K", arg.Type);
505+
arg = member.Parameters[1];
506+
Assert.AreEqual("actual", arg.Name);
507+
Assert.AreEqual("V", arg.Type);
508+
}
509+
}
510+
511+
[Test(Description = "PR 680")]
512+
public void ParseFile_RegExLiterals()
425513
{
426-
var srcModel = new FileModel(resourceFile.DestinationFile);
427-
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
428-
var model = ASFileParser.ParseFile(srcModel);
429-
Assert.AreEqual(2, model.Classes.Count);
430-
431-
var objectConstraintGeneric = model.Classes[0];
432-
Assert.AreEqual(2, objectConstraintGeneric.LineFrom);
433-
Assert.AreEqual(11, objectConstraintGeneric.LineTo);
434-
Assert.AreEqual(FlagType.Class, objectConstraintGeneric.Flags & FlagType.Class);
435-
Assert.AreEqual("TestObjectConstraint<T:({},Measurable)>", objectConstraintGeneric.FullName);
436-
Assert.AreEqual("TestObjectConstraint", objectConstraintGeneric.Name);
437-
Assert.AreEqual("<T:({},Measurable)>", objectConstraintGeneric.Template);
438-
Assert.AreEqual(2, objectConstraintGeneric.Members.Count);
439-
var member = objectConstraintGeneric.Members[0];
440-
Assert.AreEqual("test1", member.Name);
441-
Assert.AreEqual(4, member.LineFrom);
442-
Assert.AreEqual(6, member.LineTo);
443-
Assert.AreEqual("T", member.Type);
444-
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
445-
Assert.AreEqual(2, member.Parameters.Count);
446-
var arg = member.Parameters[0];
447-
Assert.AreEqual("expected", arg.Name);
448-
Assert.AreEqual("T", arg.Type);
449-
arg = member.Parameters[1];
450-
Assert.AreEqual("actual", arg.Name);
451-
Assert.AreEqual("T", arg.Type);
452-
member = objectConstraintGeneric.Members[1];
453-
Assert.AreEqual("test2<K:({},Measurable)>", member.FullName);
454-
Assert.AreEqual("test2", member.Name);
455-
Assert.AreEqual("<K:({},Measurable)>", member.Template);
456-
Assert.AreEqual(8, member.LineFrom);
457-
Assert.AreEqual(10, member.LineTo);
458-
Assert.AreEqual("K", member.Type);
459-
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
460-
arg = member.Parameters[0];
461-
Assert.AreEqual("expected", arg.Name);
462-
Assert.AreEqual("K", arg.Type);
463-
arg = member.Parameters[1];
464-
Assert.AreEqual("actual", arg.Name);
465-
Assert.AreEqual("K", arg.Type);
466-
var simpleGeneric = model.Classes[0];
467-
Assert.AreEqual(2, simpleGeneric.LineFrom);
468-
Assert.AreEqual(11, simpleGeneric.LineTo);
469-
Assert.AreEqual(FlagType.Class, simpleGeneric.Flags & FlagType.Class);
470-
Assert.AreEqual("Test<T>", simpleGeneric.FullName);
471-
Assert.AreEqual("Test", simpleGeneric.Name);
472-
Assert.AreEqual("<T>", simpleGeneric.Template);
473-
Assert.AreEqual(2, simpleGeneric.Members.Count);
474-
475-
var fullConstraintGeneric = model.Classes[1];
476-
Assert.AreEqual(13, fullConstraintGeneric.LineFrom);
477-
Assert.AreEqual(22, fullConstraintGeneric.LineTo);
478-
Assert.AreEqual(FlagType.Class, fullConstraintGeneric.Flags & FlagType.Class);
479-
Assert.AreEqual("TestFullConstraint<T:({},Measurable),Z:(Iterable<String>,Measurable)>", fullConstraintGeneric.FullName);
480-
Assert.AreEqual("TestFullConstraint", fullConstraintGeneric.Name);
481-
Assert.AreEqual("<T:({},Measurable),Z:(Iterable<String>,Measurable)>", fullConstraintGeneric.Template);
482-
Assert.AreEqual(2, fullConstraintGeneric.Members.Count);
483-
member = fullConstraintGeneric.Members[0];
484-
Assert.AreEqual("test1", member.Name);
485-
Assert.AreEqual(15, member.LineFrom);
486-
Assert.AreEqual(17, member.LineTo);
487-
Assert.AreEqual("T", member.Type);
488-
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
489-
Assert.AreEqual(2, member.Parameters.Count);
490-
arg = member.Parameters[0];
491-
Assert.AreEqual("expected", arg.Name);
492-
Assert.AreEqual("T", arg.Type);
493-
arg = member.Parameters[1];
494-
Assert.AreEqual("actual", arg.Name);
495-
Assert.AreEqual("Z", arg.Type);
496-
member = fullConstraintGeneric.Members[1];
497-
Assert.AreEqual("test2<K:({},Measurable),V:(Iterable<String>,Measurable)>", member.FullName);
498-
Assert.AreEqual("test2", member.Name);
499-
Assert.AreEqual("<K:({},Measurable),V:(Iterable<String>,Measurable)>", member.Template);
500-
Assert.AreEqual(19, member.LineFrom);
501-
Assert.AreEqual(21, member.LineTo);
502-
Assert.AreEqual("K", member.Type);
503-
Assert.AreEqual(FlagType.Function, member.Flags & FlagType.Function);
504-
arg = member.Parameters[0];
505-
Assert.AreEqual("expected", arg.Name);
506-
Assert.AreEqual("K", arg.Type);
507-
arg = member.Parameters[1];
508-
Assert.AreEqual("actual", arg.Name);
509-
Assert.AreEqual("V", arg.Type);
514+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.RegExTest.hx"))
515+
{
516+
var plugin = Substitute.For<PluginMain>();
517+
plugin.MenuItems.Returns(new List<ToolStripItem>());
518+
var context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
519+
Context.ASContext.GlobalInit(plugin);
520+
Context.ASContext.Context = context;
521+
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
522+
523+
Assert.AreEqual(4, model.Members.Count); // First member = function itself
524+
525+
var regExMember = model.Members[1];
526+
Assert.AreEqual("regExInArray", regExMember.Name);
527+
Assert.AreEqual("Array<EReg>", regExMember.Type);
528+
regExMember = model.Members[2];
529+
Assert.AreEqual("regExInObject", regExMember.Name);
530+
regExMember = model.Members[3];
531+
Assert.AreEqual("regEx", regExMember.Name);
532+
Assert.AreEqual("EReg", regExMember.Type);
533+
}
510534
}
511-
}
512535

513-
[Test(Description = "PR 680")]
514-
public void ParseFile_RegExLiterals()
515-
{
516-
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.RegExTest.hx"))
536+
[Test]
537+
public void ParseFile_Imports()
538+
{
539+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.ImportTest.hx"))
540+
{
541+
var srcModel = new FileModel(resourceFile.DestinationFile);
542+
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
543+
var model = ASFileParser.ParseFile(srcModel);
544+
545+
Assert.AreEqual(4, model.Imports.Count); // import * ignored
546+
547+
var import = model.Imports[0];
548+
Assert.AreEqual(FlagType.Class, import.Flags & FlagType.Class);
549+
Assert.AreEqual("Test", import.Name);
550+
Assert.AreEqual("package1.Test", import.Type);
551+
552+
import = model.Imports[1];
553+
Assert.AreEqual(FlagType.Package, import.Flags & FlagType.Package);
554+
Assert.AreEqual("*", import.Name);
555+
Assert.AreEqual("package1.subpackage1.*", import.Type);
556+
557+
import = model.Imports[2];
558+
Assert.AreEqual(FlagType.Package, import.Flags & FlagType.Package);
559+
Assert.AreEqual("*", import.Name);
560+
Assert.AreEqual("package2.*", import.Type);
561+
562+
import = model.Imports[3];
563+
Assert.AreEqual(FlagType.Class, import.Flags & FlagType.Class);
564+
Assert.AreEqual("Test", import.Name);
565+
Assert.AreEqual("package2.subpackage1.Test", import.Type);
566+
}
567+
}
568+
569+
[Ignore("Not supported")]
570+
public void ParseFile_ImportAliases()
571+
{
572+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.ImportAliasTest.hx"))
573+
{
574+
var srcModel = new FileModel(resourceFile.DestinationFile);
575+
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
576+
var model = ASFileParser.ParseFile(srcModel);
577+
578+
Assert.AreEqual(2, model.Imports.Count);
579+
}
580+
}
581+
582+
[Test]
583+
public void ParseFile_ComplexClass()
517584
{
518-
var plugin = Substitute.For<PluginMain>();
519-
plugin.MenuItems.Returns(new List<ToolStripItem>());
520-
var context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
521-
Context.ASContext.GlobalInit(plugin);
522-
Context.ASContext.Context = context;
523-
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
524-
525-
Assert.AreEqual(4, model.Members.Count); // First member = function itself
526-
527-
var regExMember = model.Members[1];
528-
Assert.AreEqual("regExInArray", regExMember.Name);
529-
Assert.AreEqual("Array<EReg>", regExMember.Type);
530-
regExMember = model.Members[2];
531-
Assert.AreEqual("regExInObject", regExMember.Name);
532-
regExMember = model.Members[3];
533-
Assert.AreEqual("regEx", regExMember.Name);
534-
Assert.AreEqual("EReg", regExMember.Type);
585+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.haxe.ComplexClassTest.hx"))
586+
{
587+
var srcModel = new FileModel(resourceFile.DestinationFile);
588+
srcModel.Context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
589+
var model = ASFileParser.ParseFile(srcModel);
590+
var classModel = model.Classes[0];
591+
Assert.AreEqual("Test", classModel.Name);
592+
Assert.AreEqual(FlagType.Class, classModel.Flags & FlagType.Class);
593+
Assert.AreEqual(2, classModel.LineFrom);
594+
Assert.AreEqual(32, classModel.LineTo);
595+
Assert.AreEqual(13, classModel.Members.Count);
596+
var memberModel = classModel.Members[0];
597+
Assert.AreEqual("Test", memberModel.Name);
598+
Assert.AreEqual(FlagType.Function, memberModel.Flags & FlagType.Function);
599+
Assert.AreEqual(FlagType.Constructor, memberModel.Flags & FlagType.Constructor);
600+
Assert.AreEqual(Visibility.Public, memberModel.Access & Visibility.Public);
601+
Assert.AreEqual(4, memberModel.LineFrom);
602+
Assert.AreEqual(6, memberModel.LineTo);
603+
}
535604
}
536605
}
606+
537607
}
538608
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package test.test;
2+
3+
class Test
4+
{
5+
public static inline var CONSTANT = 1;
6+
7+
public var id:Int;
8+
9+
private var _name:String;
10+
11+
public var ro(default, null):Int;
12+
13+
public var wo(null, default):Int;
14+
15+
public var x(get, set):Int;
16+
function get_x() return 1;
17+
function set_x(x) return x;
18+
19+
public var y(get, never):Int;
20+
function get_y() return 1;
21+
22+
public function new()
23+
{
24+
}
25+
26+
static function bar(s:String, v:Bool):Void
27+
{
28+
}
29+
30+
public function foo(?s:String, ?v:Bool = true):Void
31+
{
32+
}
33+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package test.test;
2+
3+
import String.fromCharCode in f;
4+
import String.fromCharCode as fcc;
5+
6+
class Test
7+
{
8+
public function new()
9+
{
10+
}
11+
}

Tests/External/Plugins/ASCompletion.Tests/Test Files/haxe/ImportTest.hx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package test.test;
22

33
import *;
4-
import package1;
5-
import package1.subpackage1;
4+
import package1.Test;
5+
import package1.subpackage1.*;
66
import package2.*;
7-
import String.fromCharCode in f;
8-
import String.fromCharCode in fcc;
7+
using package2.subpackage1.Test;
98

109
class Test
1110
{

Tests/External/Plugins/ASCompletion.Tests/Test Files/haxe/RegExTest.hx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
public function new()
22
{
3+
~/"/gi.match("\"");~/"/gi.match("\"");
34
var regExInArray:Array<EReg> = [ ~/"/gi, ~/"/gi ];
45
var regExInObject = { regEx: ~/"/gi };
56
var regEx:EReg = ~/"/gi;

0 commit comments

Comments
 (0)