
jsTest.io.kotest.assertions.json.EqualTest.kt Maven / Gradle / Ivy
//package io.kotest.assertions.json
//
//import io.kotest.assertions.shouldFail
//import io.kotest.core.spec.style.FunSpec
//import io.kotest.matchers.throwable.shouldHaveMessage
//import io.kotest.property.Arb
//import io.kotest.property.Exhaustive
//import io.kotest.property.arbitrary.Codepoint
//import io.kotest.property.arbitrary.az
//import io.kotest.property.arbitrary.numericDouble
//import io.kotest.property.arbitrary.string
//import io.kotest.property.checkAll
//import io.kotest.property.exhaustive.boolean
//
//class EqualTest : FunSpec() {
// init {
//
// test("comparing strings in objects") {
//
// checkAll(Arb.string(1..10, Codepoint.az())) { string ->
// val a = """ { "a" : "$string" } """
// a shouldEqualJson a
// }
//
// val a = """ { "a": "foo", "b": "bar" } """
// val b = """ { "a": "foo", "b": "baz" } """
// a shouldEqualJson a
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected 'baz' but was 'bar'
//
//expected:
//{
// "a": "foo",
// "b": "baz"
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
// test("comparing boolean in objects") {
// checkAll(Exhaustive.boolean(), Exhaustive.boolean()) { a, b ->
// val json = """ { "a" : $a, "b": $b } """
// json shouldEqualJson json
// }
// val a = """ { "a": true, "b": false } """
// val b = """ { "a": true, "b": true } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected true but was false
//
//expected:
//{
// "a": true,
// "b": true
//}
//
//actual:
//{
// "a": true,
// "b": false
//}"""
// )
// }
//
// test("comparing long in objects") {
//
// checkAll { long ->
// val a = """ { "a" : $long } """
// a shouldEqualJson a
// }
//
// val a = """ { "a": 123, "b": 354 } """
// val b = """ { "a": 123, "b": 326 } """
// a shouldEqualJson a
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected 326 but was 354
//
//expected:
//{
// "a": 123,
// "b": 326
//}
//
//actual:
//{
// "a": 123,
// "b": 354
//}"""
// )
// }
//
// test("comparing doubles in objects") {
//
// checkAll(Arb.numericDouble()) { double ->
// val a = """ { "a" : $double } """
// a shouldEqualJson a
// }
//
// val a = """ { "a" : 123, "b": 354 } """
// val b = """ { "a" : 123, "b" : 9897 } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected 9897 but was 354
//
//expected:
//{
// "a": 123,
// "b": 9897
//}
//
//actual:
//{
// "a": 123,
// "b": 354
//}"""
// )
// }
//
// test("comparing object with extra key") {
// val a = """ { "a" : "foo", "b" : "bar", "c": "baz" } """
// val b = """ { "a" : "foo", "b" : "bar" } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """The top level object was missing expected field(s) [c]
//
//expected:
//{
// "a": "foo",
// "b": "bar"
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar",
// "c": "baz"
//}"""
// )
// }
//
// test("comparing objects with differing keys") {
// val a = """ { "a" : "foo", "b" : "bar" } """
// val b = """ { "a" : "foo", "c" : "bar" } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """The top level object was missing expected field(s) [c]
//
//expected:
//{
// "a": "foo",
// "c": "bar"
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
// test("comparing object with extra keys") {
// val a = """ { "a" : "foo", "b" : "bar", "c": "baz", "d": true } """
// val b = """ { "a" : "foo", "b" : "bar" } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """The top level object was missing expected field(s) [c,d]
//
//expected:
//{
// "a": "foo",
// "b": "bar"
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar",
// "c": "baz",
// "d": true
//}"""
// )
// }
//
// test("comparing object with missing key") {
// val a = """ { "a" : "foo", "b" : "bar" } """
// val b = """ { "a" : "foo", "b" : "bar", "c": "baz" } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """The top level object has extra field(s) [c]
//
//expected:
//{
// "a": "foo",
// "b": "bar",
// "c": "baz"
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
// test("comparing object with missing keys") {
// val a = """ { "a" : "foo", "b" : "bar" } """
// val b = """ { "a" : "foo", "b" : "bar", "c": "baz", "d": 123 } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """The top level object has extra field(s) [c,d]
//
//expected:
//{
// "a": "foo",
// "b": "bar",
// "c": "baz",
// "d": 123
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
//
// test("comparing boolean to string with lenient mode") {
// val a = """ { "a" : "foo", "b" : true } """
// val b = """ { "a" : "foo", "b" : "true" } """
// a.shouldEqualJson(b, CompareMode.Lenient)
//
// val c = """ { "a" : "foo", "b" : false } """
// val d = """ { "a" : "foo", "b" : "false" } """
// c.shouldEqualJson(d, CompareMode.Lenient)
// }
//
// test("comparing long to string with lenient mode") {
// val a = """ { "a" : "foo", "b" : 123 } """
// val b = """ { "a" : "foo", "b" : "123" } """
// a.shouldEqualJson(b, CompareMode.Lenient)
// }
//
// test("comparing double to string with lenient mode") {
// val a = """ { "a" : "foo", "b" : 12.45 } """
// val b = """ { "a" : "foo", "b" : "12.45" } """
// a.shouldEqualJson(b, CompareMode.Lenient)
// }
//
// test("comparing string to long with lenient mode") {
// val a = """ { "a" : "foo", "b" : "12" } """
// val b = """ { "a" : "foo", "b" : 12 } """
// a.shouldEqualJson(b, CompareMode.Lenient)
// }
//
// test("comparing string to boolean with lenient mode") {
// val a = """ { "a" : "foo", "b" : "true" } """
// val b = """ { "a" : "foo", "b" : true } """
// a.shouldEqualJson(b, CompareMode.Lenient)
//
// val c = """ { "a" : "foo", "b" : "false" } """
// val d = """ { "a" : "foo", "b" : false } """
// c.shouldEqualJson(d, CompareMode.Lenient)
// }
//
// test("comparing string to double with lenient mode") {
// val a = """ { "a" : "foo", "b" : "12.45" } """
// val b = """ { "a" : "foo", "b" : 12.45 } """
// a.shouldEqualJson(b, CompareMode.Lenient)
// }
//
// test("comparing string to null") {
// val a = """ { "a" : "foo", "b" : "bar" } """
// val b = """ { "a" : "foo", "b" : null } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected null but was string
//
//expected:
//{
// "a": "foo",
// "b": null
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
// test("comparing boolean to null") {
// val a = """ { "a" : "foo", "b" : true } """
// val b = """ { "a" : "foo", "b" : null } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected null but was boolean
//
//expected:
//{
// "a": "foo",
// "b": null
//}
//
//actual:
//{
// "a": "foo",
// "b": true
//}"""
// )
// }
//
// test("comparing int to null") {
// val a = """ { "a" : "foo", "b" : 234 } """
// val b = """ { "a" : "foo", "b" : null } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected null but was int
//
//expected:
//{
// "a": "foo",
// "b": null
//}
//
//actual:
//{
// "a": "foo",
// "b": 234
//}"""
// )
// }
//
// test("comparing double to null") {
// val a = """ { "a" : "foo", "b" : 12.34 } """
// val b = """ { "a" : "foo", "b" : null } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected null but was double
//
//expected:
//{
// "a": "foo",
// "b": null
//}
//
//actual:
//{
// "a": "foo",
// "b": 12.34
//}"""
// )
// }
//
// test("comparing string to object") {
// val a = """ { "a" : "foo", "b" : "bar" } """
// val b = """ { "a" : "foo", "b" : { "c": true } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected object type but was string
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": "bar"
//}"""
// )
// }
//
// test("comparing boolean to object") {
// val a = """ { "a" : "foo", "b" : true } """
// val b = """ { "a" : "foo", "b" : { "c": true } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected object type but was boolean
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": true
//}"""
// )
// }
//
// test("comparing double to object") {
// val a = """ { "a" : "foo", "b" : 12.45 } """
// val b = """ { "a" : "foo", "b" : { "c": true } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected object type but was double
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": 12.45
//}"""
// )
// }
//
// test("comparing array to object") {
// val a = """ { "a" : "foo", "b" : [1,2,3] } """
// val b = """ { "a" : "foo", "b" : { "c": true } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected object type but was array
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": [
// 1,
// 2,
// 3
// ]
//}"""
// )
// }
//
// test("comparing object to boolean") {
// val a = """ { "a" : "foo", "b" : { "c": true } } """
// val b = """ { "a" : "foo", "b" : true } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected boolean but was object
//
//expected:
//{
// "a": "foo",
// "b": true
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}"""
// )
// }
//
// test("comparing object to long") {
// val a = """ { "a" : "foo", "b" : { "c": true } } """
// val b = """ { "a" : "foo", "b" : 2067120338512882656 } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected long but was object
//
//expected:
//{
// "a": "foo",
// "b": 2067120338512882656
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}"""
// )
// }
//
// test("comparing array to string") {
// val a = """ { "a" : "foo", "b" : { "c": true } } """
// val b = """ { "a" : "foo", "b" : "werqe" } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b' expected string but was object
//
//expected:
//{
// "a": "foo",
// "b": "werqe"
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": true
// }
//}"""
// )
// }
//
// test("deep comparison of objects should show full path to error") {
// val a = """ { "a" : "foo", "b" : { "c": { "d": 123 } } } """
// val b = """ { "a" : "foo", "b" : { "c": { "d": 534 } } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b.c.d' expected 534 but was 123
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": 534
// }
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": 123
// }
// }
//}"""
// )
// }
//
// test("deep comparison of arrays should show full path to error") {
// val a = """ { "a" : "foo", "b" : { "c": { "d": [1,2,3] } } } """
// val b = """ { "a" : "foo", "b" : { "c": { "d": [1,2,4] } } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b.c.d.[2]' expected 4 but was 3
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": [
// 1,
// 2,
// 4
// ]
// }
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": [
// 1,
// 2,
// 3
// ]
// }
// }
//}"""
// )
// }
//
// test("comparing arrays of different length") {
// val a = """ { "a" : "foo", "b" : { "c": { "d": [1,2,3,4] } } } """
// val b = """ { "a" : "foo", "b" : { "c": { "d": [1,2,4] } } } """
// shouldFail {
// a shouldEqualJson b
// }.shouldHaveMessage(
// """At 'b.c.d' expected array length 3 but was 4
//
//expected:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": [
// 1,
// 2,
// 4
// ]
// }
// }
//}
//
//actual:
//{
// "a": "foo",
// "b": {
// "c": {
// "d": [
// 1,
// 2,
// 3,
// 4
// ]
// }
// }
//}"""
// )
// }
//
// test("key order should use CompareOrder enum") {
// val a = """
// {
// "id": 32672932069455,
// "title": "Default Title",
// "sku": "RIND-TOTEO-001-MCF",
// "requires_shipping": true,
// "taxable": true,
// "featured_image": null
// }
// """
//
// val b = """
// {
// "sku": "RIND-TOTEO-001-MCF",
// "id": 32672932069455,
// "title": "Default Title",
// "requires_shipping": true,
// "taxable": true,
// "featured_image": null
// }
// """
// a.shouldEqualJson(b)
// shouldFail {
// a.shouldEqualJson(b, CompareOrder.Strict)
// }.shouldHaveMessage("""The top level object expected field 0 to be 'sku' but was 'id'
//
//expected:
//{
// "sku": "RIND-TOTEO-001-MCF",
// "id": 32672932069455,
// "title": "Default Title",
// "requires_shipping": true,
// "taxable": true,
// "featured_image": null
//}
//
//actual:
//{
// "id": 32672932069455,
// "title": "Default Title",
// "sku": "RIND-TOTEO-001-MCF",
// "requires_shipping": true,
// "taxable": true,
// "featured_image": null
//}""")
// }
// }
//}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy