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