Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Sources/Jinja/Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public enum Tests {
case let .int(num):
return num % 2 == 0
case let .double(num):
return Int(num) % 2 == 0
return num.isFinite && num.truncatingRemainder(dividingBy: 2.0) == 0.0
default:
return false
}
Expand All @@ -160,7 +160,8 @@ public enum Tests {
case let .int(num):
return num % 2 != 0
case let .double(num):
return Int(num) % 2 != 0
return num.isFinite && num.truncatingRemainder(dividingBy: 1.0) == 0.0
&& num.truncatingRemainder(dividingBy: 2.0) != 0.0
default:
return false
}
Expand Down
18 changes: 18 additions & 0 deletions Tests/JinjaTests/TemplateTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2042,6 +2042,24 @@ struct TemplateTests {
#expect(rendered == "|true|false|true|")
}

@Test("Is operator with fractional numbers even")
func isOperatorWithFractionalNumbersEven() throws {
let string = #"|{{ 4.5 is even }}|{{ 3.7 is even }}|{{ 0.1 is even }}|{{ 2.0 is even }}|"#
let context: Context = [:]

let rendered = try Template(string).render(context)
#expect(rendered == "|false|false|false|true|")
}

@Test("Is operator with fractional numbers odd")
func isOperatorWithFractionalNumbersOdd() throws {
let string = #"|{{ 4.5 is odd }}|{{ 3.7 is odd }}|{{ 0.1 is odd }}|{{ 3.0 is odd }}|"#
let context: Context = [:]

let rendered = try Template(string).render(context)
#expect(rendered == "|false|false|false|true|")
}

@Test("Is operator with mapping")
func isOperatorWithMapping() throws {
let string =
Expand Down
24 changes: 24 additions & 0 deletions Tests/JinjaTests/TestsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,18 @@ struct TestsTests {
}
}

@Test("even test with fractional numbers")
func evenWithFractionalNumbers() throws {
let result1 = try Tests.even([.double(4.5)], kwargs: [:], env: env)
#expect(result1 == false)

let result2 = try Tests.even([.double(3.7)], kwargs: [:], env: env)
#expect(result2 == false)

let result3 = try Tests.even([.double(0.1)], kwargs: [:], env: env)
#expect(result3 == false)
}

@Test("odd test with odd integer")
func oddWithOddInteger() throws {
let result = try Tests.odd([.int(3)], kwargs: [:], env: env)
Expand Down Expand Up @@ -256,6 +268,18 @@ struct TestsTests {
}
}

@Test("odd test with fractional numbers")
func oddWithFractionalNumbers() throws {
let result1 = try Tests.odd([.double(4.5)], kwargs: [:], env: env)
#expect(result1 == false)

let result2 = try Tests.odd([.double(3.7)], kwargs: [:], env: env)
#expect(result2 == false)

let result3 = try Tests.odd([.double(0.1)], kwargs: [:], env: env)
#expect(result3 == false)
}

@Test("divisibleby test with divisible integers")
func divisiblebyWithDivisibleIntegers() throws {
let result = try Tests.divisibleby([.int(10), .int(2)], kwargs: [:], env: env)
Expand Down