Exemplo n.º 1
0
        public void TestEvaluate()
        {
            // arrange
            var expr01     = @"list(x = ""abc"", y = ""def"")";
            var expected01 = new Dictionary <string, object[]> {
                ["x"] = new[] { "abc" }, ["y"] = new[] { "def" }
            };

            // act
            var actual01 = ROpsApi.Evaluate(expr01);

            // assert
            Assert.AreEqual(expected01.Count, actual01.Count);

            var areEqual = expected01.Keys.All(
                k => actual01.ContainsKey(k) && actual01[k]?[0] as string == expected01[k][0] as string
                );

            Assert.IsTrue(areEqual);
        }
Exemplo n.º 2
0
        public void TestBinaryRoundTrip()
        {
            // arrange
            var lines = new[]
            {
                $"list_{nameof(TestBinaryRoundTrip)} <- list(ints = c(1,2,3), nums = c(1.0, 2.0, 3.), alpha = c(\"a\",\"b\",\"c\"))",
                $"copy_of_list_{nameof(TestBinaryRoundTrip)} <- list_{nameof(TestBinaryRoundTrip)}"
            };

            // act
            ROpsApi.SourceLines(lines);
            var bytes = ROpsApi.SaveObjectToBinary($"list_{nameof(TestBinaryRoundTrip)}");

            ROpsApi.EvaluateNonQuery($"rm(list_{nameof(TestBinaryRoundTrip)})");
            ROpsApi.LoadFromBinary(bytes);
            var evaluated = ROpsApi.Evaluate($"all.equal(copy_of_list_{nameof(TestBinaryRoundTrip)}, list_{nameof(TestBinaryRoundTrip)})");

            // assert
            Assert.IsNotNull(evaluated.First().Value);
            Assert.IsTrue(evaluated.First().Value !.First().Resolve(out bool allEqual) && allEqual);
        }