2020-07-18 03:59:23 +02:00
use nu_test_support ::nu ;
2022-04-28 07:45:39 +02:00
#[ allow(unused) ]
2020-07-18 03:59:23 +02:00
use nu_test_support ::pipeline ;
2019-11-21 18:18:00 +01:00
2019-12-15 17:15:06 +01:00
#[ test ]
fn filters_by_unit_size_comparison ( ) {
let actual = nu! (
cwd : " tests/fixtures/formats " ,
2022-09-29 00:08:17 +02:00
" ls | where size > 1kib | sort-by size | get name | first | str trim "
2019-12-15 17:15:06 +01:00
) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " cargo_sample.toml " ) ;
2019-12-15 17:15:06 +01:00
}
2019-11-21 18:18:00 +01:00
2020-03-20 23:02:49 +01:00
#[ test ]
fn filters_with_nothing_comparison ( ) {
let actual = nu! (
cwd : " tests/fixtures/formats " ,
2020-10-26 07:55:52 +01:00
r # "echo '[{"foo": 3}, {"foo": null}, {"foo": 4}]' | from json | get foo | compact | where $it > 1 | math sum"#
2020-03-20 23:02:49 +01:00
) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 7 " ) ;
2020-03-20 23:02:49 +01:00
}
2020-04-26 07:32:17 +02:00
#[ test ]
fn where_in_table ( ) {
let actual = nu! (
cwd : " tests/fixtures/formats " ,
2020-10-26 07:55:52 +01:00
r # "echo '[{"name": "foo", "size": 3}, {"name": "foo", "size": 2}, {"name": "bar", "size": 4}]' | from json | where name in ["foo"] | get size | math sum"#
2020-04-26 07:32:17 +02:00
) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 5 " ) ;
2020-04-26 07:32:17 +02:00
}
#[ test ]
fn where_not_in_table ( ) {
let actual = nu! (
cwd : " tests/fixtures/formats " ,
2020-10-26 07:55:52 +01:00
r # "echo '[{"name": "foo", "size": 3}, {"name": "foo", "size": 2}, {"name": "bar", "size": 4}]' | from json | where name not-in ["foo"] | get size | math sum"#
2020-04-26 07:32:17 +02:00
) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 4 " ) ;
2020-04-26 07:32:17 +02:00
}
2022-04-24 11:29:21 +02:00
#[ cfg(feature = " database " ) ]
2019-11-21 18:18:00 +01:00
#[ test ]
2019-12-15 17:15:06 +01:00
fn binary_operator_comparisons ( ) {
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get ints
2019-11-21 18:18:00 +01:00
| first 4
| where z > 4200
2022-04-14 05:15:02 +02:00
| get z . 0
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 4253 " ) ;
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get ints
2019-11-21 18:18:00 +01:00
| first 4
| where z > = 4253
2022-04-14 05:15:02 +02:00
| get z . 0
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 4253 " ) ;
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get ints
2019-11-21 18:18:00 +01:00
| first 4
| where z < 10
2022-04-14 05:15:02 +02:00
| get z . 0
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 1 " ) ;
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get ints
2019-11-21 18:18:00 +01:00
| first 4
| where z < = 1
2022-04-14 05:15:02 +02:00
| get z . 0
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 1 " ) ;
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get ints
2019-11-21 18:18:00 +01:00
| where z ! = 1
2022-09-29 00:08:17 +02:00
| first
2019-11-21 18:18:00 +01:00
| get z
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 42 " ) ;
2019-11-21 18:18:00 +01:00
}
2022-04-24 11:29:21 +02:00
#[ cfg(feature = " database " ) ]
2019-11-21 18:18:00 +01:00
#[ test ]
2019-12-15 17:15:06 +01:00
fn contains_operator ( ) {
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get strings
2019-11-21 18:18:00 +01:00
| where x = ~ ell
2021-03-13 22:46:40 +01:00
| length
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 4 " ) ;
2019-11-21 18:18:00 +01:00
let actual = nu! (
2019-12-15 17:15:06 +01:00
cwd : " tests/fixtures/formats " , pipeline (
2019-11-21 18:18:00 +01:00
r #"
open sample . db
2022-04-14 05:15:02 +02:00
| get strings
2019-11-21 18:18:00 +01:00
| where x ! ~ ell
2021-03-13 22:46:40 +01:00
| length
2019-11-21 18:18:00 +01:00
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 2 " ) ;
2019-11-21 18:18:00 +01:00
}