public void TestNestedContextualErrors() { var stgs = IsotopeSettings.Create(); var iso = context("Chrome", context("Start Page", context("Patient tile", fail <Unit>("element not found")))); (var state, var value) = iso.Run(stgs); Assert.True(state.Error.Head.Message == "element not found (Chrome → Start Page → Patient tile)"); }
public void TestValidSequence() { var settings = IsotopeSettings.Create(); var ma = pure(1); var mb = pure(2); var mc = pure(3); var ms = Seq(ma, mb, mc).Sequence(); var(state, value) = ms.Run(settings); Assert.True(!state.IsFaulted); Assert.True(value == Seq(1, 2, 3)); }
public void CareersMenuItemLoadsCareersPage() { var expected = "https://www.meddbase.com/jobs-at-meddbase/"; var iso = from _1 in GoToPageAndOpenCareers from url in url from _2 in assert(url == expected, $"Expected URL to be {expected} but it was {url}") select unit; var stgs = IsotopeSettings.Create(); stgs.LogStream.Subscribe(x => output.WriteLine(x.ToString())); stgs.ErrorStream.Subscribe(x => output.WriteLine(x.ToString())); (var state, var value) = withChromeDriver(iso).RunAndThrowOnError(settings: IsotopeSettings.Create()); }
public void TestFailedSequence() { var settings = IsotopeSettings.Create(); var ma = pure(1); var mb = fail("error in item 2"); var mc = fail("error in item 3"); var ms = Seq(ma, mb, mc).Sequence(); var(state, value) = ms.Run(settings); Assert.True(state.IsFaulted); Assert.True(state.Error.Count == 1); Assert.True(state.Error.Head == Error.New("error in item 2")); }
public void TestEvalVoid() { var stgs = IsotopeSettings.Create(); stgs.LogStream.Subscribe(x => Output.WriteLine(x.ToVerboseString())); var iso = from _2 in setWindowSize(1280, 960) from _3 in nav("https://www.meddbase.com") from _ in info("Eval tests") from r in eval <object>("return;") select r; (var state, var value) = withChromeDriver(iso).RunAndThrowOnError(settings: stgs); Assert.True(value == null); }
public void TestEvalObject() { var stgs = IsotopeSettings.Create(); stgs.LogStream.Subscribe(x => Output.WriteLine(x.ToVerboseString())); var iso = from _2 in setWindowSize(1280, 960) from _3 in nav("https://www.meddbase.com") from _ in info("Eval tests") from r in eval <IDictionary <string, object> >("return {x: 5, y: 'test'};") select r; (var state, var value) = withChromeDriver(iso).RunAndThrowOnError(settings: stgs); Assert.True((long)value["x"] == 5); Assert.True((string)value["y"] == "test"); }
public void TestNestedContextualLogs() { Seq <string> expected = Seq( "INFO: Info log", "Test 1", " INFO: Info for test 1", " INFO: More info for test 1", " Test 1.SubTest 1", " INFO: Info for test Test 1.SubTest 1", " INFO: More info for test Test 1.SubTest 1", " Test 1.SubTest 2", " WARN: Info for test Test 1.SubTest 2", " WARN: More info for test Test 1.SubTest 2"); Seq <string> logs = default; var stgs = IsotopeSettings.Create(); stgs.LogStream.Subscribe(x => logs = logs.Add(x.ToString())); stgs.LogStream.Subscribe(x => Output.WriteLine(x.ToVerboseString())); var iso2 = from _ in info("Info log") from r in context("Test 1", from a in info("Info for test 1") from b in info("More info for test 1") from c in context("Test 1.SubTest 1", from d in info("Info for test Test 1.SubTest 1") from e in info("More info for test Test 1.SubTest 1") select unit) from f in context("Test 1.SubTest 2", from g in warn("Info for test Test 1.SubTest 2") from h in warn("More info for test Test 1.SubTest 2") select unit) select unit) select r; (var state, var value) = iso2.Run(stgs); Assert.True(logs == expected); Assert.True(state.Log.ToSeq() == expected); }
static void Main(string[] args) { var settings = IsotopeSettings.Create(); settings.LogStream.Subscribe(x => WriteLine(x)); var ma = info("item").Map(_ => 1); var mb = info("item").Map(_ => 2); var mc = info("item").Map(_ => 3); var ms = context("items", Seq(ma, mb, mc).Sequence()); var(nstate, nvalue) = ms.Run(settings); WriteLine(nstate.Log.ToString()); ForegroundColor = ConsoleColor.Yellow; var stgs = IsotopeSettings.Create(); stgs.LogStream.Subscribe(x => WriteLine(x)); (var state, var value) = withChromeDriver(Meddbase.GoToPageAndOpenCareers).Run(stgs); Clear(); if (state.Error.IsEmpty) { ForegroundColor = ConsoleColor.Green; WriteLine("Current Vacancies:\n"); value.Iter(x => WriteLine(x)); } else { ForegroundColor = ConsoleColor.Red; WriteLine($"ERROR: {state.Error.Head}"); } ForegroundColor = ConsoleColor.White; }
static void Main(string[] args) { Action <string, int> consoleLogger = (x, y) => WriteLine(new string('\t', y) + x); (var state, var value) = Meddbase.GoToPageAndOpenCareers.Run( new ChromeDriver(), IsotopeSettings.Create( loggingAction: consoleLogger)); Clear(); WriteLine("Current Vacancies:\n"); state.Error.Match( Some: x => WriteLine($"ERROR: {x}"), None: () => value.Iter(x => WriteLine(x))); WriteLine("\n\nLogs:\n"); WriteLine(state.Log.ToString()); WriteLine(); }
public void CareersMenuItemLoadsCareersPage() { var expected = "https://www.meddbase.com/careers/"; var iso = from _1 in GoToPageAndOpenCareers from url in url from _2 in assert(url == expected, $"Expected URL to be {expected} but it was {url}") select unit; Action <string, Log> xunitOutput = (x, y) => output.WriteLine(y.ToString()); (var state, var value) = iso.RunAndThrowOnError(new ChromeDriver(), settings: IsotopeSettings.Create(failureAction: xunitOutput)); }