Skip to content

Commit

Permalink
refactor: Simplify value comparator
Browse files Browse the repository at this point in the history
(cherry picked from commit 4f78808)
  • Loading branch information
saig0 committed Sep 3, 2024
1 parent a56afb5 commit c633560
Showing 1 changed file with 8 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,43 +49,21 @@ class ValComparator(private val valueMapper: ValueMapper) {
}

private def compare(x: List[Val], y: List[Val]): ValBoolean = {
if (x.size != y.size) {
ValBoolean(false)

} else {
val itemsAreEqual = x.zip(y).foldRight(true) { case ((x, y), listIsEqual) =>
listIsEqual && {
compare(x, y) match {
case ValBoolean(itemIsEqual) => itemIsEqual
case _ => false
}
}
}
ValBoolean(itemsAreEqual)
}
ValBoolean(
x.size == y.size && x.zip(y).forall { case (itemX, itemY) => equals(itemX, itemY) }
)
}

private def compare(x: Context, y: Context): ValBoolean = {
val xVars = x.variableProvider.getVariables
val yVars = y.variableProvider.getVariables

if (xVars.keys != yVars.keys) {
ValBoolean(false)

} else {
val itemsAreEqual = xVars.keys.foldRight(true) { case (key, contextIsEqual) =>
contextIsEqual && {
val xVal = valueMapper.toVal(xVars(key))
val yVal = valueMapper.toVal(yVars(key))
ValBoolean(xVars.keys == yVars.keys && xVars.keys.forall { key =>
val xVal = valueMapper.toVal(xVars(key))
val yVal = valueMapper.toVal(yVars(key))

compare(xVal, yVal) match {
case ValBoolean(entryIsEqual) => entryIsEqual
case _ => false
}
}
}
ValBoolean(itemsAreEqual)
}
equals(xVal, yVal)
})
}

}

0 comments on commit c633560

Please sign in to comment.