Fix topology runOrderDiff
This commit is contained in:
parent
ac63b57478
commit
4e5e05530e
|
@ -6,11 +6,19 @@ open Expect
|
|||
open Expect.Operators
|
||||
|
||||
describe("Topology", () => {
|
||||
Only.test("when equal 1x", () => {
|
||||
test("when equal 1x", () => {
|
||||
Topology.runOrderDiff(["a"], ["a"])->expect == []
|
||||
})
|
||||
|
||||
test("when equal 3x", () => {
|
||||
Topology.runOrderDiff(["a", "b", "c"], ["a", "b", "c"])->expect == []
|
||||
})
|
||||
|
||||
test("less dependents", () => {
|
||||
Topology.runOrderDiff(["a", "b"], ["a", "b", "c", "d"])->expect == []
|
||||
})
|
||||
|
||||
test("more dependents", () => {
|
||||
Topology.runOrderDiff(["a", "b", "c", "d"], ["a", "b"])->expect == ["c", "d"]
|
||||
})
|
||||
})
|
||||
|
|
|
@ -81,16 +81,25 @@ let runOrderDiff = (current: array<string>, previous0: array<string>): array<str
|
|||
Belt.Array.forEach(filler, _ => {
|
||||
let _ = Js.Array2.push(previous, "")
|
||||
})
|
||||
let zipped = Belt.Array.zip(current, previous)
|
||||
let zipped: array<(string, string)> = Belt.Array.zip(current, previous)
|
||||
|
||||
// zipped
|
||||
// ->Belt.Array.map(((curr, prev)) => {
|
||||
// let result = `(${curr}, ${prev})`
|
||||
// result
|
||||
// })
|
||||
// ->Js.Array2.joinWith(", ")
|
||||
// ->Js.log
|
||||
|
||||
let (_, affected) = Belt.Array.reduce(zipped, (true, []), ((wasEqual, acc), (curr, prev)) => {
|
||||
switch wasEqual {
|
||||
| true =>
|
||||
if curr == prev {
|
||||
(true, Belt.Array.concat(acc, [curr]))
|
||||
(true, acc)
|
||||
} else {
|
||||
(false, acc)
|
||||
(false, Belt.Array.concat(acc, [curr]))
|
||||
}
|
||||
| false => (false, acc)
|
||||
| false => (false, Belt.Array.concat(acc, [curr]))
|
||||
}
|
||||
})
|
||||
affected
|
||||
|
|
Loading…
Reference in New Issue
Block a user