Exemple #1
0
        public void Test003_Variable_Basic_More2()
        {
            var CA330A1234 = JitVariable.Null();                                                             // CA330A1234:Object

            CA330A1234.Classes.Set(":Mirai:Car");                                                            // CA330A1234:Mirai:Car

            var AAA = JitVariable.From("AAA");                                                               // AAA

            CA330A1234.ChildVriables["Attr"][AAA] = JitVariable.From(1);                                     // CA330A1234.Attr[AAA] = 1
            CA330A1234.ChildVriables["X"]         = JitVariable.From(2);                                     // CA330A1234.X = 2
            Assert.IsTrue(CA330A1234.ChildVriables["X"] == JitVariable.From(2));                             // CA330A1234.X == 2

            CA330A1234.ChildVriables["Y"] = JitVariable.From("kan", ":KanbanSheet");                         // CA330A1234.Y:KanbanSheet = "kan"
            Assert.IsTrue(CA330A1234.ChildVriables["Y"] == JitVariable.From("kan"));                         // CA330A1234.Y == "kan"
            Assert.IsTrue(CA330A1234.ChildVriables["Y"] == JitVariable.From("kan", ":KanbanSheet") == true); // CA330A1234.Y == "kan":KanbanSheet
            Assert.IsTrue(CA330A1234.ChildVriables["Y"] == JitVariable.From("kan", ":Dummy") == true);       // CA330A1234.Y == "kan":Dummy because == is not consider type differences
            Assert.IsTrue(CA330A1234.ChildVriables["Y"].Is(":KanbanSheet"));                                 // CA330A1234.Y is :KanbanSheet
            Assert.IsTrue(CA330A1234.ChildVriables["Y"].Is(":Mirai") == false);                              // CA330A1234.Y is NOT :Mirai (but CA330A1234 is :Mirai)
            Assert.IsTrue(CA330A1234.ChildVriables["Y"].Is(":Car") == false);                                // CA330A1234.Y is NOT :Car   (but CA330A1234 is :Car)
            Assert.IsTrue(CA330A1234.ChildVriables["Y"].Is(":Object") == true);                              // CA330A1234.Y is :Object
            Assert.IsTrue(CA330A1234.Is(":KanbanSheet") == false);                                           // CA330A1234 is NOT :KanbanSheet (but CA330A1234.Y is it)

            CA330A1234.Merge(JitVariable.From(12, ":eCar"));                                                 // CA330A1234 �� 12:eCar
            Assert.IsTrue(CA330A1234.Is(":eCar") == true);                                                   // CA330A1234 is :eCar because of merged

            var LOVE = JitVariable.From("Love");

            CA330A1234.ChildVriables["Attr"][LOVE] = JitVariable.From("d", ":Mind");                                // CA330A1234.Attr[LOVE] = "d":Mind
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][LOVE].ChildVriables["Attr"][AAA] == JitVariable.Null()); // CA330A1234.Attr[LOVE].Attr[AAA] == null
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][LOVE].Is(":Mirai") == false);                            // CA330A1234.Attr[LOVE] is NOT :Mirai (that's :Mind)
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][LOVE].Is(":Mind"));                                      // CA330A1234.Attr[LOVE] is :Mind
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][LOVE].Is(":Human") == false);                            // CA330A1234.Attr[LOVE] is NOT :Human
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][LOVE].Is(":Car") == false);                              // CA330A1234.Attr[LOVE] is NOT :Car (that's :Mind)
        }
Exemple #2
0
        public void Test15()
        {
            var code = @"
                s = new CiSwitchNextLink
                    NextLinkVarName = 'NextLinkNo2' // Try to auto cast from string to JitVariable
            ";
            var jac  = new JacInterpreter();

            jac.Exec(code);
            var s = jac["s"] as CiSwitchNextLink;

            Assert.IsNotNull(s);
            Assert.AreEqual(s.NextLinkVarName, JitVariable.From("NextLinkNo2"));
        }
Exemple #3
0
        public void Test002_Variable_Basic_More()
        {
            var CA330A1234 = JitVariable.Null();

            CA330A1234.Classes.Set(":Mirai:Car");                                                            // CA330A1234:Mirai:Car
            CA330A1234.ChildVriables["Attr"][JitVariable.From("AAA")] = JitVariable.From(1);                 // CA330A1234.Attr[AAA] = 1
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][JitVariable.From("AAA")] == JitVariable.From(1)); // so, true

            Assert.IsTrue(CA330A1234.Is(":Mirai") == true);                                                  // means CA330A1234 have class :Mirai
            Assert.IsTrue(CA330A1234.Is(":Noah") == false);                                                  // means CA330A1234 have NOT :Noah
            Assert.IsTrue(CA330A1234.Is(":Car") == true);                                                    // means CA330A1234 have :Car too.
            Assert.IsTrue(CA330A1234.Is(":Object") == true);                                                 // means CA330A1234 have :Object that is set automatically.
            Assert.IsTrue(CA330A1234.Is(":Work") == false);                                                  // means CA330A1234 have not :Work because nobody set the class name yet.

            var a = JitVariable.From(CA330A1234, ":Car");                                                    // a:Car = CA330A1234

            Assert.IsTrue(a.ChildVriables["Attr"][JitVariable.From("AAA")] == JitVariable.From(1));          // a.Attr[AAA] == 1 == CA330A1234.Attr[AAA]
            Assert.IsTrue(a.Is(":Car") == true);
            Assert.IsTrue(a.Is(":Mirai") == true);                                                           // a is :Mirai
            Assert.IsTrue(CA330A1234.Is(":Mirai") == true);                                                  // because CA330A1234 is :Mirai too.

            var b = JitVariable.From(CA330A1234);                                                            // b = CA330A1234

            Assert.IsTrue(b.ChildVriables["Attr"][JitVariable.From("AAA")] == JitVariable.From(1));          // b.Attr[AAA] == 1 because CA330A1234.Attr[AAA] == 1
            Assert.IsTrue(b.Is(":Car") == true);                                                             // b is :Car because CA330A1234 is :Car
            Assert.IsTrue(b.Is(":Var") == false);                                                            // So, b is NOT :Var
            Assert.IsTrue(b.Is(":Object") == true);                                                          // b is still :Object

            var c = JitVariable.From(CA330A1234, ":Customer");                                               // c:Customer = CA330A1234

            Assert.IsTrue(c.ChildVriables["Attr"][JitVariable.From("AAA")] == JitVariable.From(1));          // c.Attr[AAA] == 1 because CA330A1234.Attr[AAA] == 1
            Assert.IsTrue(c.Is(":Car") == true);                                                             // c is :Car because CA330A1234 is :Car too.
            Assert.IsTrue(c.Is(":Customer") == true);                                                        // c is :Customer because you set before.
            Assert.IsTrue(c.Is(":XXX") == false);                                                            // c is not :XXX because nobody set it yet.

            var d = JitVariable.From(CA330A1234, ":Mirai:Noah:Car:XXX");                                     // d:Mirai:Noah:Car:XXX = CA330A1234

            Assert.IsTrue(d.Is(":Mirai") == true);                                                           // d is :Mirai
            Assert.IsTrue(d.Is(":Noah") == true);                                                            // d is :Noah
            Assert.IsTrue(d.Is(":XXX") == true);                                                             // d is :XXX
            Assert.IsTrue(d.Is(JitVariable.Class.Object));                                                   // d is :Object
        }
Exemple #4
0
        public void Test004_Variable_Class_Inheritance()
        {
            var cd  = JitVariable.Null(":C:D");                   // null:C:D
            var de  = JitVariable.Null(":D:E");                   // null:D:E
            var cde = JitVariable.Null(":C:D:E");                 // null:C:D:E

            Assert.IsTrue(cd.As(cde) == false);                   // null:C:D   is NOT as null:C:D:E
            Assert.IsTrue(de.As(cde) == false);                   // null:D:E   is NOT as null:C:D:E
            Assert.IsTrue(cde.As(cd) == true);                    // null:C:D:E is     as null:C:D
            Assert.IsTrue(cde.As(de) == true);                    // null:C:D:E is     as null:D:E

            var CA330A1234 = JitVariable.Null();                  // CA330A1234 = null:Object

            CA330A1234.Classes.Set(":Mirai:Car");                 // CA330A1234 = null:Mirai:Car
            var NY500B9876 = JitVariable.Null(":Noah:Car");       // NY500B9876 = null:Noah:Car
            var TX100C5555 = JitVariable.Null(":Mirai:eCar:Car"); // TX100C5555 = null:Mirai:eCar:Car

            Assert.IsTrue(CA330A1234.As(NY500B9876) == false);    // null:Noah:Car       is NOT as null:Mirai:eCar:Car
            Assert.IsTrue(CA330A1234.As(TX100C5555) == false);    // null:Mirai:Car      is NOT as null:Mirai:eCar:Car
            Assert.IsTrue(TX100C5555.As(CA330A1234) == true);     // null:Mirai:eCar:Car is NOT as null:Mirai:Car
        }
Exemple #5
0
        public void Test14()
        {
            var code = @"
                st = new Stage
                    Procs
                        add sink = new Process
                        add p1 = new Process
                            Name = 'PROCP1'
                            Cio
                                add i1 = new CiPickTo
                                    Delay = 1.5M
                                    TargetWorkClass = ':Car'
                                    DestProcessKey = sink.ID
                                add i2 = new CiDelay
                                    Delay = 2.5H
                                add i3 = new CiSwitchNextLink
                                    NextLinkVarName = new Variable
                                        Value = 'AA'
            ";
            var jac  = new JacInterpreter();

            jac.Exec(code);
            var st = jac.GetStage("st");
            var i1 = jac["i1"] as CiPickTo;

            Assert.IsNotNull(i1);
            Assert.AreEqual(i1.Delay, TimeSpan.FromMinutes(1.5));
            Assert.AreEqual(i1.TargetWorkClass, ":Car");
            Assert.AreEqual(st.FindChildProcess(i1.DestProcessKey, true), jac.GetProcess("sink")); // check lazy method

            var i2 = jac["i2"] as CiDelay;

            Assert.IsNotNull(i2);
            Assert.AreEqual(i2.Delay, TimeSpan.FromHours(2.5));

            var i3 = jac["i3"] as CiSwitchNextLink;

            Assert.IsNotNull(i3);
            Assert.AreEqual(i3.NextLinkVarName, JitVariable.From("AA"));
        }
Exemple #6
0
        public void Test16()
        {
            var code = @"
                new Stage
                    Procs
                        add sink = new Process
                        add p1 = new Process
                            Name = 'MyProc'
                            Cio
                                add i1 = new CiSwitchNextLink
                                    NextLinkVarName = new Variable
                                        Value = 'NextLinkNo2222'
                                    TargetWorkClass = ':Work2'
            ";
            var jac  = new JacInterpreter();

            jac.Exec(code);
            var i1 = jac["i1"] as CiSwitchNextLink;

            Assert.IsNotNull(i1);
            Assert.AreEqual(i1.NextLinkVarName, JitVariable.From("NextLinkNo2222"));
            Assert.AreEqual(i1.TargetWorkClass, ":Work2");
        }
Exemple #7
0
        public void Test001_Variable_Basic()
        {
            var v1 = JitVariable.Null();

            Assert.IsTrue(v1.Value == null);

            var i123 = JitVariable.From(123);

            Assert.IsTrue(i123.Value.Equals(123));
            Assert.IsTrue(i123.Is(JitVariable.Class.Int));
            Assert.IsTrue(i123.Is(":Object:Int"), "contains both :Object and :Int classes");
            Assert.IsTrue(i123.Is(":Int:Object"), "sequence free");
            Assert.IsTrue(i123.Is(":Object"), "contains :Object");
            Assert.IsTrue(i123.Is(":Int"), "contains :Int");
            Assert.IsTrue(i123.Is(":Object:Int:Dummy") == false, "check false because it is NOT contains :Dummy");
            Assert.IsTrue(i123.Is(":Dummy") == false, "check false because it is NOT contains :Dummy");
            try
            {
                i123.Is("Object:Int");
                Debug.Fail("expected an exception here because Object is not start with :");
            }
            catch (JitVariable.SyntaxErrorException)
            {
                // OK
            }

            var d34556 = JitVariable.From(345.56);

            Assert.IsTrue(d34556.Value.Equals(345.56));
            Assert.IsTrue(d34556.Is(":Object:Double"));
            Assert.IsTrue(d34556.Is(":Object:Int") == false);

            var ahaha = JitVariable.From("ahaha");

            Assert.IsTrue(ahaha.Value.Equals("ahaha"));
            Assert.IsTrue(ahaha.Is(":Object:String"));
            Assert.IsTrue(ahaha.Is(":Object:Int") == false);

            var ihihi = JitVariable.From("ihihi");

            Assert.IsTrue(ahaha.Classes.Equals(ihihi.Classes), "compare classes");

            ahaha.Classes.Add(":Test");
            Assert.IsTrue(ahaha.Is(":Object:Test:String"), "should contains :Test");
            Assert.IsTrue(ahaha.Classes.Equals(ihihi.Classes) == false, "should not equal because of :Test");

            var x = JitVariable.Null();

            Assert.IsTrue(x == JitVariable.Null(), "should be able to compare Null and Null");

            x[JitVariable.From("EE")] = JitVariable.From("EE-VAL");
            var tmp = x[JitVariable.From("EE")];

            Assert.IsTrue(tmp.Equals(JitVariable.From("EE-VAL")), "that value should be transmoved from x[EE]");
            Assert.IsTrue(tmp.Equals(JitVariable.From("EE-VAL-DUMMY")) == false);

            var f = JitVariable.From(4);    // f = 4

            x[f] = JitVariable.From(6);     // x[4] = 6
            var fval = x[f];                // fval = x[4] = 6

            Assert.IsTrue(fval == JitVariable.From(6));

            var g = JitVariable.From("PartNumber");     // g = PartNumber

            x[g] = JitVariable.From("1234567");         // x[PartNumber] = "1234567"
            var gval = x[g];                            // gval = x[PartNumber] = "1234567"

            Assert.IsTrue(gval == JitVariable.From("1234567"));
            Assert.IsTrue(fval != JitVariable.From("1234567"), "fval == 6");
            Assert.IsTrue(fval != JitVariable.From("6"), "fval == 6. and more, fval(int) != '6'(string)");

            var CA330A1234 = JitVariable.Null();

            CA330A1234.Classes.Set(":Mirai:Car");                                                           // CA330A1234:Mirai:Car
            CA330A1234.ChildVriables["Attr"][JitVariable.From("A")] = JitVariable.From(1);                  // CA330A1234.Attr[A] = 1
            Assert.IsTrue(CA330A1234.ChildVriables["Attr"][JitVariable.From("A")] == JitVariable.From(1));  // CA330A1234.Attr[A] == 1 (true)
        }
Exemple #8
0
        public void Test18()
        {
            var code = @"
                st = new Stage
                    Procs
                        add sink = new Process
                        add p1 = new Process
                            Name = 'MyProc'
                            Cio
                                add o1 = new CoMaxCost
            ";
            var jac  = new JacInterpreter();

            jac.Exec(code);
            var st = jac.GetStage("st");

            Assert.AreEqual(jac.GetProcess("MyProc")?.Name, "MyProc");
            Assert.AreEqual(jac.GetProcess("MyProc")?.Cios.Count(), 1);

            var code2 = @"
                w1 = new Work
                    Next = l1 = new Location
                        Stage = st
                        SubsetCache = st
                        Path = '\'
                        Process = p1 = new Process
                w2 = new Work
                    Current = w1.Next
                w3 = new Work
                    Previous = w2.Current
                w4 = new Work
                    Current = l1
            ";

            jac.Exec(code2);
            var w1 = jac.GetWork("w1");
            var w2 = jac.GetWork("w2");
            var w3 = jac.GetWork("w3");
            var w4 = jac.GetWork("w4");
            var p1 = jac.GetProcess("p1");
            var l1 = jac.GetLocation("l1");

            Assert.IsNotNull(p1);
            Assert.IsNull(w1.Previous);
            Assert.IsNull(w1.Current);
            Assert.AreEqual(w1.Next.SubsetCache, st);
            Assert.AreEqual(w1.Next.Process, p1);
            Assert.AreEqual(w2.Current.SubsetCache, w1.Next.SubsetCache);
            Assert.AreEqual(w2.Current.SubsetCache, st);
            Assert.AreEqual(w2.Current.Process, p1);
            Assert.AreEqual(w3.Previous.SubsetCache, st);
            Assert.AreEqual(w3.Previous.Process, p1);
            Assert.AreEqual(w4.Current, l1);

            var code3 = @"
                o1
                    ReferenceVarName = 'Weight'
                    Value = 500
            ";

            jac.Exec(code3);

            var o1 = jac["o1"] as CoMaxCost;

            Assert.IsNotNull(o1);
            Assert.AreEqual(o1.ReferenceVarName, JitVariable.From("Weight"));
            Assert.AreEqual(o1.Value, 500.0);
        }