Example #1
0
        public void Works2()
        {
            var values = new[]
            {
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"superfoo\", \"altitudeMeters\": 1.687834 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"moarfoo\", \"altitudeMeters\": 0.573957 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"fooest\", \"altitudeMeters\": 4.384927 }]"),
            };

            const string SingleQuoteProgram = "(define (execute stream) (rx-where (lambda (d) (> d 0.2)) (rx-select (lambda (s) (jdv-parse 'altitudeMeters' (invoke-instance s 'Substring' 2 (- ((method get_Length) s) 4)))) (rx-select (lambda (t) (cdr t)) (rx-where (lambda (t) (= 'navdata' (car t))) stream)))))";
            var          program            = SingleQuoteProgram.Replace('\'', '"');
            var          results            = Execute(program, values);

            Assert.AreEqual(3, results.Count());
        }
Example #2
0
        public void Works()
        {
            var values = new[]
            {
                new Tuple <string, string>("quux", "guy"),
                new Tuple <string, string>("yak", "shaving"),
                new Tuple <string, string>("quux", "steele")
            };

            const string SingleQuoteProgram = "(define (execute stream) (rx-select (lambda (s) (invoke-instance s 'ToUpper')) (rx-select (lambda (t) (invoke-instance t 'get_Item2')) (rx-where (lambda (u) (= 'quux' (invoke-instance u 'get_Item1'))) stream))))";
            var          program            = SingleQuoteProgram.Replace('\'', '"');
            var          results            = Execute(program, values);

            Assert.AreEqual(2, results.Count());
        }
Example #3
0
        public void WorksWithMacro()
        {
            var values = new[]
            {
                new Tuple <string, string>("quux", "guy"),
                new Tuple <string, string>("yak", "shaving"),
                new Tuple <string, string>("quux", "steele")
            };

            const string SingleQuoteProgram = "(define (execute stream) (rx-zip (lambda (x y) (+ x ':' y)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'quux' ((method get_Item1) t))) stream)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'yak' ((method get_Item1) t))) stream))))";
            var          program            = SingleQuoteProgram.Replace('\'', '"');
            var          results            = Execute(program, values).ToList();

            Assert.AreEqual(1, results.Count());
            Assert.AreEqual("guy:shaving", results.First());
        }
Example #4
0
        public void WorksWithSimplifiedFacesAndHeightsThreadingMacro()
        {
            var values = new[]
            {
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"superfoo\", \"altitudeMeters\": -0.239784 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"moarfoo\", \"altitudeMeters\": 0.573957 }]"),
                new Tuple <string, string>("faces", "[{ \"barity\": \"bar\", \"confidence\": 0.42347 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"superfoo\", \"altitudeMeters\": 1.687834 }]"),
                new Tuple <string, string>("faces", "[{ \"barity\": \"bar\", \"confidence\": 0.94728 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"superfoo\", \"altitudeMeters\": 1.687834 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"moarfoo\", \"altitudeMeters\": 2.5493784 }]"),
                new Tuple <string, string>("faces", "[{ \"barity\": \"bar\", \"confidence\": 1.8381293 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"fooest\", \"altitudeMeters\": 3.5634756 }]"),
                new Tuple <string, string>("navdata", "[{ \"fooness\": \"fooest\", \"altitudeMeters\": 4.384927 }]"),
            };

            const string SingleQuoteProgram = "(define (execute stream) (rx-combine-latest (lambda (c h) 'Found a face at the right height') (->> stream (rx-where (lambda (t) (= 'faces' ((method get_Item1) t)))) (rx-select (method get_Item2)) (rx-where (lambda (t) (> ((method get_Length) t) 4))) (rx-select (lambda (s) (jdv-parse 'confidence' s))) (rx-where (lambda (c) (> c 1.0)))) (->> stream (rx-where (lambda (t) (= 'navdata' ((method get_Item1) t)))) (rx-select (method get_Item2)) (rx-select (lambda (s) (jdv-parse 'altitudeMeters' s))) (rx-where (lambda (d) (and (not (invoke-static 'System.Double' 'IsNaN' d)) (> d 0.2)))))))";
            var          program            = SingleQuoteProgram.Replace('\'', '"');
            var          results            = Execute(program, values).ToList();

            Assert.AreEqual(3, results.Count());
            Assert.AreEqual("Found a face at the right height", results.First());
        }
Example #5
0
        public void WorksWithMacroWithLotsOfStreams()
        {
            var values = new[]
            {
                new Tuple <string, string>("quux", "guy"),
                new Tuple <string, string>("yak", "shaving"),
                new Tuple <string, string>("lemming", "ferocious"),
                new Tuple <string, string>("llama", "knitting"),
                new Tuple <string, string>("otter", "water"),
                new Tuple <string, string>("llama", "spit"),
                new Tuple <string, string>("quux", "steele"),
                new Tuple <string, string>("otter", "pensive"),
                new Tuple <string, string>("yak", "hair"),
                new Tuple <string, string>("lemming", "leader")
            };

            const string SingleQuoteProgram = "(define (execute stream) (rx-zip (lambda (a b c d e) (+ a ':' b ':' c ':' d ':' e)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'quux' ((method get_Item1) t))) stream)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'yak' ((method get_Item1) t))) stream)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'lemming' ((method get_Item1) t))) stream)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'llama' ((method get_Item1) t))) stream)) (rx-select (method get_Item2) (rx-where (lambda (t) (= 'otter' ((method get_Item1) t))) stream))))";
            var          program            = SingleQuoteProgram.Replace('\'', '"');
            var          results            = Execute(program, values).ToList();

            Assert.AreEqual(2, results.Count());
            Assert.AreEqual("guy:shaving:ferocious:knitting:water", results[0]);
            Assert.AreEqual("steele:hair:leader:spit:pensive", results[1]);
        }