public void library_keyword_works() { const string code = @" library X library Y, abst "; var simplecomp = new CompileSingleAction(code, ""); var result = (ThemaCompilerResultForQweb)simplecomp.Process(); Console.WriteLine(simplecomp.LastContext.Project.GetLog()); //inspection muter Assert.NotNull(result.Errors); Assert.True(simplecomp.LastContext.IsComplete); Assert.True(result.IsComplete); Assert.NotNull(result.Log); Assert.NotNull(result.Result); // var td = simplecomp.LastContext.Themas["X"]; Assert.True(td.IsWorking); Assert.True(td.IsLibrary); td = simplecomp.LastContext.Themas["Y"]; Assert.True(td.IsWorking); //check abst ignorance Assert.True(td.IsLibrary); }
public void bad_parent_target() { var code = @" thema x parent y "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.False(result.IsComplete); Assert.NotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "ERLINK01")); }
public void order_independence_for_complex() { var code = @" thema A, x = 1, +x=2 thema B, +x=2, x=1 "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var td = simplecomp.LastContext.Themas["A"]; Assert.AreEqual("1|2", td.ResolvedParameters["x"]); td = simplecomp.LastContext.Themas["B"]; Assert.AreEqual("1|2", td.ResolvedParameters["x"]); }
public void error_on_import_library() { const string code = @" library X thema Y import X "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); Assert.False(simplecomp.LastContext.IsComplete); Assert.NotNull(simplecomp.LastContext.Errors.FirstOrDefault(x => x.ErrorCode == "TE1205")); }
public void bad_group() { var code = @" thema x, isgroup = false thema y group x "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.False(result.IsComplete); Assert.NotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "ERLINK03")); }
public void order_independence_for_complex() { var code = @" thema A, x = 1, +x=2 thema B, +x=2, x=1 " ; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var td = simplecomp.LastContext.Themas["A"]; Assert.AreEqual("1|2", td.ResolvedParameters["x"]); td = simplecomp.LastContext.Themas["B"]; Assert.AreEqual("1|2", td.ResolvedParameters["x"]); }
public void error_on_invalid_ref() { const string code = @" library X out ZZ thema Y out REP uselib ZZ2 "; var simplecomp = new CompileSingleAction(code, "nonresolvedlibraryiserror true"); simplecomp.Process(); Console.WriteLine(simplecomp.LastContext.Project.GetLog()); Assert.True(simplecomp.LastContext.Project.NonResolvedLibraryIsError); Assert.False(simplecomp.LastContext.IsComplete); Assert.NotNull(simplecomp.LastContext.Errors.FirstOrDefault(x => x.ErrorCode == "ERLIBR03")); }
public void test_complex_parameter() { var code = @" thema A, x = 1 A B, +x = 2 B C, +x = 3 C D, +x = 4, -x=2 "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var td = simplecomp.LastContext.Themas["D"]; Assert.AreEqual("1|3|4", td.ResolvedParameters["x"]); }
public void short_lib_references() { const string code = @" library X out ZZ thema Y out REP uselib ZZ "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var td = simplecomp.LastContext.Themas["Y"]; Console.WriteLine(td.Xml); }
public void valid_grop_parent_mix_no_grp() { var code = @" thema g, isgroup = true thema p group g thema c parent p "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.True(result.IsComplete); }
public void normal_group() { var code = @" thema x, isgroup = true thema y group x "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.True(result.IsComplete); var th = result.Themas["y"]; Assert.NotNull(th.Links.FirstOrDefault(x => x.Type.Code == "group" && x.Target.Code == "x")); }
public void complex_parameters_and_list_definition() { const string code = @" param p1, list= '1|2' thema A p1_list = '2|4|5' p1_code = p1 out A ask @p1_code, +list=@p1_list # must support resolve parameters in call A B +p1_list= '6|7' -p1_list= '1|4' # 1 exclusion will fail due to thema params are resolved before item parameters "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var td = simplecomp.LastContext.Themas["B"]; var p = td.Items["A.out"].Elements("var").First(); Assert.AreEqual("1|2|5|6|7", p.Attribute("list").Value); }
public void invalid_grop_parent_mix_no_grp() { var code = @" thema g, isgroup = true thema p thema c parent p group g "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.False(result.IsComplete); Assert.NotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "LP02")); }
public void library_keyword_works() { const string code = @" library X library Y, abst "; var simplecomp = new CompileSingleAction(code, ""); var result = (ThemaCompilerResultForQweb) simplecomp.Process(); Console.WriteLine(simplecomp.LastContext.Project.GetLog()); //inspection muter Assert.NotNull(result.Errors); Assert.True(simplecomp.LastContext.IsComplete); Assert.True(result.IsComplete); Assert.NotNull(result.Log); Assert.NotNull(result.Result); // var td = simplecomp.LastContext.Themas["X"]; Assert.True(td.IsWorking); Assert.True(td.IsLibrary); td = simplecomp.LastContext.Themas["Y"]; Assert.True(td.IsWorking); //check abst ignorance Assert.True(td.IsLibrary); }
public void invalid_grop_parent_mix_grp() { var code = @" thema g, isgroup = true thema g2, isgroup = true thema p group g thema c parent p group g2 "; var simplecomp = new CompileSingleAction(code, ""); simplecomp.Process(); var result = simplecomp.LastContext; Assert.False(result.IsComplete); Assert.NotNull(result.Errors.FirstOrDefault(x => x.ErrorCode == "LP02")); }