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); }
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); }