updated bool values parsing in set_variable actions

This commit is contained in:
pkurchatov
2022-09-13 16:11:11 +03:00
parent 84ba7a3b2b
commit fffe95329b
2 changed files with 36 additions and 15 deletions
@@ -235,16 +235,12 @@ extension Dictionary where Key == DivVariableName, Value == DivVariableValue {
newValue = nil
}
case .bool:
if let newBool = Int(value) {
switch newBool {
case 0:
newValue = .bool(false)
case 1:
newValue = .bool(true)
default:
newValue = nil
}
} else {
switch value.lowercased() {
case "0", "false":
newValue = .bool(false)
case "1", "true":
newValue = .bool(true)
default:
newValue = nil
}
case .color:
@@ -104,7 +104,7 @@ final class DivVariablesStorageTest: XCTestCase {
storage.set(variables: globalVariables, triggerUpdate: false)
storage.set(cardId: cardId, variables: variables)
XCTAssertEqual(.string("value"), makeVariables()["string_var"])
XCTAssertEqual(.string("value"), getVariable("string_var"))
}
func test_LocalVaraibleShadowsGlobalVariable_LocalsSetBeforeGlobals() {
@@ -115,21 +115,42 @@ final class DivVariablesStorageTest: XCTestCase {
]
storage.set(variables: globalVariables, triggerUpdate: false)
XCTAssertEqual(.string("value"), makeVariables()["string_var"])
XCTAssertEqual(.string("value"), getVariable("string_var"))
}
func test_update_UpdatesStringVariable() {
storage.set(cardId: cardId, variables: variables)
storage.update(cardId: cardId, name: "string_var", value: "new value")
XCTAssertEqual(.string("new value"), makeVariables()["string_var"])
XCTAssertEqual(.string("new value"), getVariable("string_var"))
}
func test_update_UpdatesNumberVariable() {
storage.set(cardId: cardId, variables: variables)
storage.update(cardId: cardId, name: "number_var", value: "234.567")
XCTAssertEqual(.number(234.567), makeVariables()["number_var"])
XCTAssertEqual(.number(234.567), getVariable("number_var"))
}
func test_update_UpdatesBoolVariable_BoolValue() {
storage.set(cardId: cardId, variables: [ "bool_var": .bool(false) ])
storage.update(cardId: cardId, name: "bool_var", value: "true")
XCTAssertEqual(.bool(true), getVariable("bool_var"))
}
func test_update_UpdatesBoolVariable_MixedCase() {
storage.set(cardId: cardId, variables: [ "bool_var": .bool(false) ])
storage.update(cardId: cardId, name: "bool_var", value: "tRuE")
XCTAssertEqual(.bool(true), getVariable("bool_var"))
}
func test_update_UpdatesBoolVariable_IntValue() {
storage.set(cardId: cardId, variables: [ "bool_var": .bool(false) ])
storage.update(cardId: cardId, name: "bool_var", value: "1")
XCTAssertEqual(.bool(true), getVariable("bool_var"))
}
func test_update_DoesNothing_ForUnknownVariable() {
@@ -175,7 +196,7 @@ final class DivVariablesStorageTest: XCTestCase {
storage.update(cardId: cardId, name: "global_var", value: "new value")
XCTAssertEqual(.string("new value"), makeVariables()["global_var"])
XCTAssertEqual(.string("new value"), getVariable("global_var"))
}
func test_update_DoesNotUpdateShadowedGlobalVariable() {
@@ -249,6 +270,10 @@ final class DivVariablesStorageTest: XCTestCase {
private func makeVariables(cardId: DivCardID = cardId) -> DivVariables {
storage.makeVariables(for: cardId)
}
private func getVariable(_ name: DivVariableName) -> DivVariableValue? {
storage.makeVariables(for: cardId)[name]
}
}
private let cardId = DivCardID(rawValue: "test_card")