1
1
Fork 0
exercism/jq/flatten-array/test-flatten-array.bats
Christina Sørensen 1e351d9c3e
feat(jq): two-fer, resistor-color, resistor-color-duo, leap, isogram, flatten-array
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2024-12-16 08:26:51 +01:00

353 lines
3.8 KiB
Bash

#!/usr/bin/env bats
# generated on 2023-08-17T10:24:18Z
load bats-extra
load bats-jq
@test 'empty' {
#
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": []
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'no nesting' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
0,
1,
2
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
0,
1,
2
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'flattens a nested array' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
[
[]
]
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'flattens array with just integers present' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
1,
[
2,
3,
4,
5,
6,
7
],
8
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
1,
2,
3,
4,
5,
6,
7,
8
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test '5 level nesting' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
0,
2,
[
[
2,
3
],
8,
100,
4,
[
[
[
50
]
]
]
],
-2
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
0,
2,
2,
3,
8,
100,
4,
50,
-2
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test '6 level nesting' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
1,
[
2,
[
[
3
]
],
[
4,
[
[
5
]
]
],
6,
7
],
8
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
1,
2,
3,
4,
5,
6,
7,
8
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'null values are omitted from the final result' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
1,
2,
null
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
1,
2
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'consecutive null values at the front of the list are omitted from the final result' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
null,
null,
3
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
3
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'consecutive null values in the middle of the list are omitted from the final result' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
1,
null,
null,
4
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
1,
4
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test '6 level nest list with null values' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
0,
2,
[
[
2,
3
],
8,
[
[
100
]
],
null,
[
[
null
]
]
],
-2
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[
0,
2,
2,
3,
8,
100,
-2
]
END_EXPECTED
)
assert_equal "$output" "$expected"
}
@test 'all values in nested list are null' {
run jq -r -f flatten-array.jq << 'END_INPUT'
{
"array": [
null,
[
[
[
null
]
]
],
null,
null,
[
[
null,
null
],
null
],
null
]
}
END_INPUT
assert_success
expected=$(cat << 'END_EXPECTED'
[]
END_EXPECTED
)
assert_equal "$output" "$expected"
}