mirror of
https://github.com/mikefarah/yq.git
synced 2026-09-01 05:34:51 +08:00
Added sort_by operator
This commit is contained in:
@@ -8,22 +8,56 @@ var sortByOperatorScenarios = []expressionScenario{
|
||||
document: "[{a: banana},{a: cat},{a: apple}]",
|
||||
expression: `sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!bool)::true\n",
|
||||
"D0, P[], (!!seq)::[{a: apple}, {a: banana}, {a: cat}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Sort is stable",
|
||||
subdescription: "Note the order of the elements in unchanged when equal in sorting.",
|
||||
document: "[{a: banana, b: 1}, {a: banana, b: 2}, {a: banana, b: 3}, {a: banana, b: 4}]",
|
||||
expression: `sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!seq)::[{a: banana, b: 1}, {a: banana, b: 2}, {a: banana, b: 3}, {a: banana, b: 4}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Sort by numeric field",
|
||||
document: "[{a: 10},{a: 100},{a: 1}]",
|
||||
expression: `sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!seq)::[{a: 1}, {a: 10}, {a: 100}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
document: "[{a: 1.1},{a: 1.001},{a: 1.01}]",
|
||||
expression: `sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!seq)::[{a: 1.001}, {a: 1.01}, {a: 1.1}]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Sort, nulls come first",
|
||||
document: "[8,3,null,6, true, false, cat]",
|
||||
expression: `sort`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!seq)::[null, false, true, 3, 6, 8, cat]\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "false before true",
|
||||
document: "[{a: false, b: 1}, {a: true, b: 2}, {a: false, b: 3}]",
|
||||
expression: `sort_by(.a)`,
|
||||
expected: []string{
|
||||
"D0, P[], (!!seq)::[{a: false, b: 1}, {a: false, b: 3}, {a: true, b: 2}]\n",
|
||||
},
|
||||
},
|
||||
// {
|
||||
// description: "Sort, nulls come first",
|
||||
// document: "[8,3,null,6]",
|
||||
// expression: `sort`,
|
||||
// expected: []string{
|
||||
// "D0, P[], (!!bool)::[null,3,6,8]\n",
|
||||
// },
|
||||
// },
|
||||
}
|
||||
|
||||
func TestSortByOperatorScenarios(t *testing.T) {
|
||||
for _, tt := range sortByOperatorScenarios {
|
||||
testScenario(t, &tt)
|
||||
}
|
||||
documentScenarios(t, "Sort", sortByOperatorScenarios)
|
||||
documentScenarios(t, "sort", sortByOperatorScenarios)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user