public async Task TestSetExecutorAsync() { // arrange var pathToLibrary = TestData.SimLibraryDirectory.FullName; var simLibrary = new SimLibrary(); simLibrary.LoadFrom(pathToLibrary); var pathToCode = Path.Combine(pathToLibrary, "InspectExec", "inspect.R"); // act using var managedImport = new ManagedImport(pathToCode, simLibrary); using var server = new RVisServer(); var client = await server.OpenChannelAsync(); managedImport.InspectAsync(client).Wait(); managedImport.SetExecutorAsync(managedImport.UnaryFunctions[0], managedImport.ScalarSets[0], client).Wait(); // assert Assert.AreEqual(managedImport.ExecutorOutput?.NColumns, 3); Assert.AreEqual(managedImport.ExecutorParameterCandidates.Count, 2); Assert.AreEqual(managedImport.ExecutorValueCandidates.Count, 2); Assert.AreEqual(managedImport.ScalarSets.Count, 1); Assert.AreEqual(managedImport.UnaryFunctions.Count, 1); Assert.AreEqual(managedImport.ValueCandidates.Count, 1); }
internal static async Task <NumDataColumn[]> GetNumDataAsync(string code) { using var server = new RVisServer(); var client = await server.OpenChannelAsync(); return(await client.EvaluateNumDataAsync(code)); }
public async Task TestCreateVector() { // arrange var source01 = Array.Empty <double>(); var source02 = new[] { 1d, 2, 3 }; var expected01 = source01; var expected02 = source02; double[]? actual01; double[]? actual02; // act using (var server = new RVisServer()) { var client = await server.OpenChannelAsync(); await client.CreateVectorAsync(source01, nameof(source01)); await client.CreateVectorAsync(source02, nameof(source02)); var doubles = await client.EvaluateDoublesAsync(nameof(source01)); actual01 = doubles.Single().Value?.ToArray(); doubles = await client.EvaluateDoublesAsync(nameof(source02)); actual02 = doubles.Single().Value?.ToArray(); } // assert Assert.AreEqual(expected01, actual01); Assert.IsTrue(expected02.SequenceEqual(actual02 !)); }
public async Task TestEvaluate() { // arrange var invalidR = "seq({i * 10}, {i*30}, by={i*10})"; var validR = "1:3"; string?invalidRMessage = default; NumDataColumn[] validRReturn; // act using (var server = new RVisServer()) { var client = await server.OpenChannelAsync(); // invalid first to show channel is not left faulted try { await client.EvaluateNumDataAsync(invalidR); } catch (Exception ex) { invalidRMessage = ex.Message; } validRReturn = await client.EvaluateNumDataAsync(validR); } // assert Assert.IsTrue(invalidRMessage?.Contains("'i' not found") == true); Assert.IsTrue(new[] { 1.0, 2, 3 }.SequenceEqual(validRReturn[0].Data.ToArray())); }
public async Task TestCreateMatrix() { // arrange var source01 = new double[0, 0] { }; var source02 = new double[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; var expected01 = source01.ToJagged(); var expected02 = source02.ToJagged(); double[][]? actual01; double[][]? actual02; // act using (var server = new RVisServer()) { var client = await server.OpenChannelAsync(); await client.CreateMatrixAsync(source01.ToJagged(), nameof(source01)); await client.CreateMatrixAsync(source02.ToJagged(), nameof(source02)); var doubles = await client.EvaluateDoublesAsync(nameof(source01)); actual01 = doubles.Select(ds => ds.Value.ToArray()).ToArray(); doubles = await client.EvaluateDoublesAsync(nameof(source02)); actual02 = doubles? .Select(ds => ds.Value.ToArray()) .ToArray() .Transpose(); } // assert Assert.AreEqual(expected01.GetType(), actual01.GetType()); expected02.Iter((i, a) => Assert.IsTrue(a.SequenceEqual(actual02 ![i])));
public async Task TestInspectAsync() { // arrange var pathToLibrary = TestData.SimLibraryDirectory.FullName; var simLibrary = new SimLibrary(); simLibrary.LoadFrom(pathToLibrary); var pathToCode = Path.Combine(pathToLibrary, "InspectTmpl", "inspect.R"); // act using var managedImport = new ManagedImport(pathToCode, simLibrary); using var server = new RVisServer(); var client = await server.OpenChannelAsync(); managedImport.InspectAsync(client).Wait(); // assert Assert.AreEqual(managedImport.Scalars.Count, 2); Assert.AreEqual(managedImport.ParameterCandidates.Count, 2); Assert.AreEqual(managedImport.DataSets.Count, 3); Assert.AreEqual(managedImport.ValueCandidates.Count, 3); Assert.AreEqual(managedImport.ValueCandidates.Single(vc => vc.Name == "o").ElementCandidates.Count, 3); }