Пример #1
0
        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)");
        }
Пример #2
0
        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));
        }
Пример #3
0
        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());
        }
Пример #4
0
        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"));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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");
        }
Пример #7
0
        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);
        }
Пример #8
0
        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;
        }
Пример #9
0
        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();
        }
Пример #10
0
        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));
        }