コード例 #1
0
        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);
        }
コード例 #2
0
		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"));
		}
コード例 #3
0
		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"]);
		}
コード例 #4
0
		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"));
		}
コード例 #5
0
		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"));
		}
コード例 #6
0
        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"));
        }
コード例 #7
0
        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"]);
        }
コード例 #8
0
        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"));
        }
コード例 #9
0
        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"));
        }
コード例 #10
0
		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"));
		}
コード例 #11
0
        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"]);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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"));
        }
コード例 #15
0
        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"));
        }
コード例 #16
0
		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);
		}
コード例 #17
0
        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"));
        }
コード例 #18
0
		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);
		}
コード例 #19
0
        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);
        }
コード例 #20
0
		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"));
		}
コード例 #21
0
		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);
		}
コード例 #22
0
		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"));
		}
コード例 #23
0
		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"]);
		}
コード例 #24
0
		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);
		}