2020-07-18 03:59:23 +02:00
use nu_test_support ::nu ;
#[ cfg(feature = " sqlite " ) ]
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 " ,
2021-02-10 03:31:12 +01:00
" ls | where size > 1kib | sort-by size | get name | first 1 | 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
}
2020-07-18 03:59:23 +02:00
#[ cfg(feature = " sqlite " ) ]
2020-04-13 20:59:33 +02:00
#[ test ]
fn explicit_block_condition ( ) {
let actual = nu! (
cwd : " tests/fixtures/formats " , pipeline (
r #"
open sample . db
| where table_name = = ints
| get table_values
| first 4
| where { = $it . z > 4200 }
| get z
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 4253 " ) ;
2020-04-13 20:59:33 +02:00
}
2020-07-18 03:59:23 +02:00
#[ cfg(feature = " sqlite " ) ]
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
| where table_name = = ints
| get table_values
| first 4
| where z > 4200
| get z
" #
) ) ;
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
| where table_name = = ints
| get table_values
| first 4
| where z > = 4253
| get z
" #
) ) ;
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
| where table_name = = ints
| get table_values
| first 4
| where z < 10
| get z
" #
) ) ;
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
| where table_name = = ints
| get table_values
| first 4
| where z < = 1
| get z
" #
) ) ;
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
| where table_name = = ints
| get table_values
| where z ! = 1
| first 1
| get z
" #
) ) ;
2020-05-07 13:03:43 +02:00
assert_eq! ( actual . out , " 42 " ) ;
2019-11-21 18:18:00 +01:00
}
2020-07-18 03:59:23 +02:00
#[ cfg(feature = " sqlite " ) ]
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
| where table_name = = strings
| get table_values
| 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
| where table_name = = strings
| get table_values
| 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
}