public void DsfDotNetMultiAssignObjectActivity_ToNewRecordset_DebugModeAddsDebugItems()
        {
            var env = new ExecutionEnvironment();

            env.AssignJson(new AssignValue("[[@names(1).Name]]", "Mary"), 0);
            env.AssignJson(new AssignValue("[[@names(2).Name]]", "Jane"), 0);
            env.Assign("[[list().name]]", "asdf", 0);

            var data = new Mock <IDSFDataObject>();

            data.Setup(o => o.Environment).Returns(() => env);
            data.Setup(o => o.IsDebugMode()).Returns(() => true);

            var ob = new DsfDotNetMultiAssignObjectActivity
            {
                FieldsCollection = new List <AssignObjectDTO>
                {
                    new AssignObjectDTO("[[list().name]]", "[[list().name]]", 0)
                }
            };

            ob.Execute(data.Object, 0);

            var a = ob.GetDebugOutputs(env, 0);

            Assert.AreEqual("asdf", a[0].ResultsList[1].Value);
            Assert.AreEqual("[[list(1).name]]", a[0].ResultsList[1].Variable);
        }
Exemple #2
0
        public static DataStorage.WarewolfEnvironment CreateEnvironmentWithData()
        {
            var env = new ExecutionEnvironment();

            env.Assign("[[Rec(1).a]]", "1", 0);
            env.Assign("[[Rec(2).a]]", "2", 0);
            env.Assign("[[Rec(3).a]]", "3", 0);
            env.Assign("[[Rec(4).a]]", "2", 0);
            env.Assign("[[Rec(1).b]]", "a", 0);
            env.Assign("[[Rec(2).b]]", "b", 0);
            env.Assign("[[Rec(3).b]]", "c", 0);
            env.Assign("[[Rec(4).b]]", "c", 0);
            env.Assign("[[x]]", "1", 0);
            env.Assign("[[y]]", "y", 0);
            env.Assign("[[r]]", "s", 0);
            env.Assign("[[s]]", "s", 0);
            env.AssignJson(new AssignValue("[[@Person.Name]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[@Person.Age]]", "22"), 0);
            env.AssignJson(new AssignValue("[[@Person.Spouse.Name]]", "dora"), 0);
            env.AssignJson(new AssignValue("[[@Person.Children(1).Name]]", "Mary"), 0);
            env.AssignJson(new AssignValue("[[@Person.Children(2).Name]]", "Jane"), 0);
            env.AssignJson(new AssignValue("[[@Person.Score(1)]]", "2"), 0);
            env.AssignJson(new AssignValue("[[@Person.Score(2)]]", "3"), 0);
            env.AssignJson(new AssignValue("[[array(1)]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[arrayObj(1).Name]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[arrayObj(2).Name]]", "bobe"), 0);
            var p = new PrivateObject(env);

            return((DataStorage.WarewolfEnvironment)p.GetFieldOrProperty("_env"));
        }
        public void CommonFunctions_atomtoString_GivenCircularJson_ExpectCorrectJson()
        {
            //------------Setup for test--------------------------
            var eEnv = new ExecutionEnvironment();

            eEnv.AssignJson(new AssignValue("[[@a]]", "{\"aa\":1}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.b()]]", "{\"bb\":2}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.c(1).a1]]", "[[@a]]"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.c(1).a1.aa]]", "55"), 0);
            var env = ExtractEnvironment(eEnv);

            var result = EvaluationFunctions.eval(env, 0, false, "[[@a]]");
            var a      = CommonFunctions.evalResultToString(result);

            var json = (JObject)JsonConvert.DeserializeObject(a);

            Assert.AreEqual(1, json["aa"]);
            Assert.AreEqual(1, ((JArray)json["b"]).Count);
            Assert.AreEqual(2, json["b"][0]["bb"]);
            var c1 = ((JArray)json["c"])[0];

            Assert.AreEqual(55, c1["a1"]["aa"]);
            Assert.AreEqual(2, c1["a1"]["b"][0]["bb"]);
            Assert.IsFalse(((JObject)c1["a1"]).ContainsKey("c"));
            //Assert.AreEqual(1, ((JArray)c1["a1"]["c"]).Count); // this should not exist, it is an artifact of the assign in progress when c(1).a1 is being assigned its parent @a
        }
        public void AssignJobjectAndJArray_MultipleJValues_EvalCorreclty()
        {
            //------------Setup for test--------------------------

            var environment = new ExecutionEnvironment();
            var jObject     = "{\"PolicyNo\":\"A0003\",\"DateId\":32,\"SomeVal\":\"Bob\"}";
            var values      = new List <IAssignValue>()
            {
                new AssignValue("[[@Person()]]", jObject),
                new AssignValue("[[@Person()]]", jObject),
                new AssignValue("[[@Person()]]", jObject),
                new AssignValue("[[@Person()]]", jObject),
            };


            //------------Execute Test---------------------------

            environment.AssignJson(new AssignValue("[[@Person()]]", "{\"PolicyNo\":\"NNNN\",\"DateId\":32,\"SomeVal\":\"Bob\"}"), 0);
            environment.AssignJson(values, 0);
            //------------Assert Results-------------------------

            var data = GetFromEnv(environment);
            var warewolfEvalResult       = environment.Eval("[[@Person()]]", 0);
            var isWarewolfAtomListresult = warewolfEvalResult.IsWarewolfAtomListresult;
            var isWarewolfAtomresult     = warewolfEvalResult.IsWarewolfAtomResult;

            Assert.IsFalse(isWarewolfAtomListresult);
            Assert.IsTrue(isWarewolfAtomresult);
            var container = data.JsonObjects["Person"];
            var obj       = container as JArray;

            Assert.IsNotNull(obj);
        }
Exemple #5
0
        public static DataStorage.WarewolfEnvironment CreateEnvironmentWithData()
        {
            var env = new ExecutionEnvironment();

            env.Assign("[[Rec(1).a]]", "1", 0);
            env.Assign("[[Rec(2).a]]", "2", 0);
            env.Assign("[[Rec(3).a]]", "3", 0);
            env.Assign("[[non(3).a]]", "1", 0);
            env.Assign("[[non(2).a]]", "2", 0);
            env.Assign("[[non(1).a]]", "3", 0);
            env.Assign("[[Rec(1).b]]", "a", 0);
            env.Assign("[[Rec(2).b]]", "b", 0);
            env.Assign("[[Rec(3).b]]", "c", 0);
            env.Assign("[[escapeValue]]", "some test with a tab character\tin it", 0);
            env.Assign("[[esc(1).val]]", "some\tstring", 0);
            env.Assign("[[esc(2).val]]", "another\tstring", 0);
            env.Assign("[[x]]", "1", 0);
            env.Assign("[[y]]", "y", 0);
            env.AssignJson(new AssignValue("[[@Person.Name]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[@Person.Age]]", "22"), 0);
            env.AssignJson(new AssignValue("[[@Person.Spouse.Name]]", "dora"), 0);
            env.AssignJson(new AssignValue("[[@Person.Children(1).Name]]", "Mary"), 0);
            env.AssignJson(new AssignValue("[[@Person.Children(2).Name]]", "Jane"), 0);
            env.AssignJson(new AssignValue("[[@Person.Score(1)]]", "2"), 0);
            env.AssignJson(new AssignValue("[[@Person.Score(2)]]", "3"), 0);
            env.AssignJson(new AssignValue("[[@array(1)]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[@arrayObj(1).Name]]", "bob"), 0);
            env.AssignJson(new AssignValue("[[@arrayObj(2).Name]]", "bobe"), 0);
            var p = new Warewolf.Testing.PrivateObject(env);

            return((DataStorage.WarewolfEnvironment)p.GetFieldOrProperty("_env"));
        }
        public void GivenListResults_ExecutionEnvironmentEvalAsListOfStrings_ShouldReturnValuesAsList()
        {
            Assert.IsNotNull(_environment);
            _environment.AssignJson(new AssignValue(PersonNameExpression, "Sanele"), 0);
            var evalAsListOfStrings = _environment.EvalAsListOfStrings(PersonNameExpression, 0);

            Assert.IsTrue(evalAsListOfStrings.Contains("Sanele"));
        }
        public void AssignSingleProperty_AssignASecondValueChildNameWithAtNotation()
        {
            //------------Setup for test--------------------------

            ExecutionEnvironment environment = new ExecutionEnvironment();
            var values = new List <IAssignValue>()
            {
                new AssignValue("[[@Person.Name]]", "John"), new AssignValue("[[@Person.Children(1).Name]]", "Mary"), new AssignValue("[[@Person.Children(2).Name]]", "Joe")
            };
            Dev2JsonSerializer ser = new Dev2JsonSerializer();

            //var p = new Person() { Name = "John", Children = new List<Person> { new Person() { Name = "Mary",  }}};

            //var x = ser.Serialize(p);
            //------------Execute Test---------------------------
            environment.AssignJson(values, 0);
            //------------Assert Results-------------------------
            var data = GetFromEnv(environment);

            Assert.IsTrue(data.JsonObjects.ContainsKey("Person"));
            var obj = data.JsonObjects["Person"] as JObject;

            if (obj != null)
            {
                Assert.AreEqual(obj.ToString(), "{\r\n  \"Name\": \"John\",\r\n  \"Children\": [\r\n    {\r\n      \"Name\": \"Mary\"\r\n    },\r\n    {\r\n      \"Name\": \"Joe\"\r\n    }\r\n  ]\r\n}");
            }
            else
            {
                Assert.Fail("bob");
            }
        }
        public void AssignSingleProperty_ValueProperty_Assign_A_PropertyWithAtNotation()
        {
            //------------Setup for test--------------------------

            ExecutionEnvironment environment = new ExecutionEnvironment();
            var values = new List <IAssignValue>()
            {
                new AssignValue("[[@Person.Name]]", "John")
            };
            Dev2JsonSerializer ser = new Dev2JsonSerializer();

            //------------Execute Test---------------------------
            environment.AssignJson(values, 0);
            //------------Assert Results-------------------------

            var data = GetFromEnv(environment);

            Assert.IsTrue(data.JsonObjects.ContainsKey("Person"));
            var obj = data.JsonObjects["Person"] as JObject;

            if (obj != null)
            {
                Assert.AreEqual(obj.ToString(), "{\r\n  \"Name\": \"John\"\r\n}");
            }
            else
            {
                Assert.Fail("bob");
            }
        }
        public void AssignSingleProperty_AssignAllValueChildNameWithAtNotation()
        {
            //------------Setup for test--------------------------

            var environment = new ExecutionEnvironment();
            var values      = new List <IAssignValue>()
            {
                new AssignValue("[[@Person.Name]]", "John"), new AssignValue("[[@Person.Children(1).Name]]", "Mary"), new AssignValue("[[@Person.Children(2).Name]]", "Joe"), new AssignValue("[[@Person.Children(*).Name]]", "Moe")
            };

            //------------Execute Test---------------------------
            environment.AssignJson(values, 0);
            //------------Assert Results-------------------------
            var data = GetFromEnv(environment);

            Assert.IsTrue(data.JsonObjects.ContainsKey("Person"));
            if (data.JsonObjects["Person"] is JObject obj)
            {
                Assert.AreEqual(obj.ToString(), "{\r\n  \"Name\": \"John\",\r\n  \"Children\": [\r\n    {\r\n      \"Name\": \"Moe\"\r\n    },\r\n    {\r\n      \"Name\": \"Moe\"\r\n    }\r\n  ]\r\n}");
            }
            else
            {
                Assert.Fail("bob");
            }
        }
        public void AssignJArray_MultipleJValues_EvalIndexThreeCorreclty()
        {
            //------------Setup for test--------------------------

            var environment = new ExecutionEnvironment();
            var values      = new List <IAssignValue>()
            {
                new AssignValue("[[@Person()]]", "{\"PolicyNo\":\"A0001\",\"DateId\":32,\"SomeVal\":\"Bob\"}"),
                new AssignValue("[[@Person()]]", "{\"PolicyNo\":\"A0002\",\"DateId\":32,\"SomeVal\":\"Bob\"}"),
                new AssignValue("[[@Person()]]", "{\"PolicyNo\":\"A0003\",\"DateId\":32,\"SomeVal\":\"Bob\"}"),
                new AssignValue("[[@Person()]]", "{\"PolicyNo\":\"A0004\",\"DateId\":32,\"SomeVal\":\"Bob\"}"),
            };

            //------------Execute Test---------------------------
            environment.AssignJson(values, 0);
            //------------Assert Results-------------------------

            var warewolfEvalResult       = environment.Eval("[[@Person(3)]]", 0);
            var isWarewolfAtomListresult = warewolfEvalResult.IsWarewolfAtomListresult;
            var isWarewolfAtomresult     = warewolfEvalResult.IsWarewolfAtomResult;

            Assert.IsFalse(isWarewolfAtomListresult);
            Assert.IsTrue(isWarewolfAtomresult);
            var evalResultToString = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult);
            var contains           = evalResultToString.Contains("A0003");

            Assert.IsTrue(contains);
        }
        public void CommonFunctions_atomtoString_GivenJsonEmptyArray_ExpectCorrectJson()
        {
            //------------Setup for test--------------------------
            var eEnv = new ExecutionEnvironment();

            eEnv.AssignJson(new AssignValue("[[@a]]", "{\"aa\":1}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.b]]", "{\"bb\":2}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.c]]", "[[@a]]"), 0);
            eEnv.AssignJson(new AssignValue("[[@a2(1)]]", "{\"indexNested\": 3}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.d]]", "[[@a2]]"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.e()]]", "{\"ee\":4}"), 0);
            eEnv.AssignJson(new AssignValue("[[@a.f]]", "[]"), 0);
            var env = ExtractEnvironment(eEnv);

            var result = EvaluationFunctions.eval(env, 0, false, "[[@a]]");
            var a      = CommonFunctions.evalResultToString(result);
            var json   = (JObject)JsonConvert.DeserializeObject(a);

            Assert.AreEqual(1, json["aa"]);
            Assert.AreEqual(2, json["b"]["bb"]);
            Assert.AreEqual(1, json["c"]["aa"]);
            Assert.AreEqual(2, json["c"]["b"]["bb"]);
            Assert.AreEqual(1, ((JArray)json["d"]).Count);
            Assert.AreEqual(3, json["d"][0]["indexNested"]);
            Assert.AreEqual(1, ((JArray)json["e"]).Count);
            Assert.AreEqual(4, json["e"][0]["ee"]);
            Assert.AreEqual(0, ((JArray)json["f"]).Count, "empty json array expected");
        }
        public void BuildJObjectArrayIndexMapHelper_Build_GivenListOfStrings_ExpectIndexForEachArrayItem()
        {
            var env = new ExecutionEnvironment();

            env.AssignJson(new AssignValue("[[@users()]]", "{\"name\":\"bob\"}"), 0);
            env.AssignJson(new AssignValue("[[@users()]]", "{\"name\":\"joe\"}"), 0);
            env.AssignJson(new AssignValue("[[@users()]]", "{\"name\":\"jef\"}"), 0);

            var test = new BuildJObjectArrayIndexMapHelper(env);

            const string exp = "[[@users(*).name]]";

            var parsedExpression = EvaluationFunctions.parseLanguageExpressionWithoutUpdate(exp, ShouldTypeCast.Yes) as LanguageAST.LanguageExpression.JsonIdentifierExpression;

            var indexMap = test.Build(parsedExpression.Item, exp);

            Assert.AreEqual(3, indexMap.Count);
            Assert.AreEqual("[[@users(1).name]]", indexMap[0]);
            Assert.AreEqual("[[@users(2).name]]", indexMap[1]);
            Assert.AreEqual("[[@users(3).name]]", indexMap[2]);
        }
        public void BuildJObjectArrayIndexMapHelper_Build_GivenNullExpression_DoesNotThrow()
        {
            var env = new ExecutionEnvironment();

            env.AssignJson(new AssignValue("[[@ob]]", "{\"addresses\":[],\"users\":[{\"name\":\"bob\"},{\"name\":\"joe\"},{\"name\":\"jef\"}],\"tags\":[]}"), 0);

            var test = new BuildJObjectArrayIndexMapHelper(env);

            const string exp = "[[@ob.users(*).name]]";

            var indexMap = test.Build(null, exp);

            Assert.AreEqual(0, indexMap.Count);
        }
        public void BuildJObjectArrayIndexMapHelper_Build_GivenObjectWithChildThatHasListOfStrings_SelectNonExistentItem_ExpectNoIndexMap()
        {
            var env = new ExecutionEnvironment();

            env.AssignJson(new AssignValue("[[@ob]]", "{\"addresses\":[],\"user\":{\"name\":\"bob\", \"friends\":[{\"name\":\"joe\"},{\"name\":\"jef\"}]}}"), 0);

            var test = new BuildJObjectArrayIndexMapHelper(env);

            const string exp = "[[@ob.user.addresses(*).name]]";

            var parsedExpression = EvaluationFunctions.parseLanguageExpressionWithoutUpdate(exp, ShouldTypeCast.Yes) as LanguageAST.LanguageExpression.JsonIdentifierExpression;

            var indexMap = test.Build(parsedExpression.Item, exp);

            Assert.AreEqual(0, indexMap.Count);
        }