|
2 | 2 |
|
3 | 3 | import static org.junit.Assert.assertEquals; |
4 | 4 | import static org.junit.Assert.assertFalse; |
| 5 | +import static org.junit.Assert.assertNotEquals; |
5 | 6 | import static org.junit.Assert.assertNotNull; |
6 | 7 | import static org.junit.Assert.assertNull; |
7 | 8 | import static org.junit.Assert.assertTrue; |
@@ -2609,4 +2610,140 @@ public void testArrayGetJSONArrayFromStringifiedElement() { |
2609 | 2610 | assertEquals(3, nested.size()); |
2610 | 2611 | assertEquals(1, nested.get(0)); |
2611 | 2612 | } |
| 2613 | + |
| 2614 | + // ── JSONArray equals / hashCode ────────────────────────────── |
| 2615 | + |
| 2616 | + @Test |
| 2617 | + public void testArrayEqualsSameContent() { |
| 2618 | + JSONArray a = JSONArray.parseArray("[1,\"two\",true,null]"); |
| 2619 | + JSONArray b = JSONArray.parseArray("[1,\"two\",true,null]"); |
| 2620 | + assertEquals(a, b); |
| 2621 | + assertEquals(a.hashCode(), b.hashCode()); |
| 2622 | + } |
| 2623 | + |
| 2624 | + @Test |
| 2625 | + public void testArrayEqualsDifferentContent() { |
| 2626 | + JSONArray a = JSONArray.parseArray("[1,2,3]"); |
| 2627 | + JSONArray b = JSONArray.parseArray("[1,2,4]"); |
| 2628 | + assertNotEquals(a, b); |
| 2629 | + } |
| 2630 | + |
| 2631 | + @Test |
| 2632 | + public void testArrayEqualsBuiltVsParsed() { |
| 2633 | + JSONArray built = new JSONArray(); |
| 2634 | + built.add(1); |
| 2635 | + built.add("hello"); |
| 2636 | + built.add(true); |
| 2637 | + JSONArray parsed = JSONArray.parseArray("[1,\"hello\",true]"); |
| 2638 | + assertEquals(built, parsed); |
| 2639 | + assertEquals(built.hashCode(), parsed.hashCode()); |
| 2640 | + } |
| 2641 | + |
| 2642 | + @Test |
| 2643 | + public void testArrayEqualsEmpty() { |
| 2644 | + assertEquals(new JSONArray(), JSONArray.parseArray("[]")); |
| 2645 | + } |
| 2646 | + |
| 2647 | + @Test |
| 2648 | + public void testArrayEqualsNested() { |
| 2649 | + JSONArray a = JSONArray.parseArray("[[1,2],[3,4]]"); |
| 2650 | + JSONArray b = JSONArray.parseArray("[[1,2],[3,4]]"); |
| 2651 | + assertEquals(a, b); |
| 2652 | + assertEquals(a.hashCode(), b.hashCode()); |
| 2653 | + } |
| 2654 | + |
| 2655 | + @Test |
| 2656 | + public void testArrayNotEqualsNull() { |
| 2657 | + assertNotEquals(new JSONArray(), null); |
| 2658 | + } |
| 2659 | + |
| 2660 | + @Test |
| 2661 | + public void testArrayNotEqualsOtherType() { |
| 2662 | + assertNotEquals(new JSONArray(), "[]"); |
| 2663 | + } |
| 2664 | + |
| 2665 | + @Test |
| 2666 | + public void testArrayEqualsSelf() { |
| 2667 | + JSONArray a = JSONArray.parseArray("[1]"); |
| 2668 | + assertEquals(a, a); |
| 2669 | + } |
| 2670 | + |
| 2671 | + @Test |
| 2672 | + public void testArrayEqualsOrderMatters() { |
| 2673 | + JSONArray a = JSONArray.parseArray("[1,2]"); |
| 2674 | + JSONArray b = JSONArray.parseArray("[2,1]"); |
| 2675 | + assertNotEquals(a, b); |
| 2676 | + } |
| 2677 | + |
| 2678 | + // ── JSONObject equals / hashCode ───────────────────────────── |
| 2679 | + |
| 2680 | + @Test |
| 2681 | + public void testObjectEqualsSameContent() { |
| 2682 | + JSONObject a = JSON.parseObject("{\"k\":1,\"v\":\"two\"}"); |
| 2683 | + JSONObject b = JSON.parseObject("{\"k\":1,\"v\":\"two\"}"); |
| 2684 | + assertEquals(a, b); |
| 2685 | + assertEquals(a.hashCode(), b.hashCode()); |
| 2686 | + } |
| 2687 | + |
| 2688 | + @Test |
| 2689 | + public void testObjectEqualsDifferentContent() { |
| 2690 | + JSONObject a = JSON.parseObject("{\"k\":1}"); |
| 2691 | + JSONObject b = JSON.parseObject("{\"k\":2}"); |
| 2692 | + assertNotEquals(a, b); |
| 2693 | + } |
| 2694 | + |
| 2695 | + @Test |
| 2696 | + public void testObjectEqualsBuiltVsParsed() { |
| 2697 | + JSONObject built = new JSONObject(); |
| 2698 | + built.put("name", "test"); |
| 2699 | + built.put("count", 42); |
| 2700 | + JSONObject parsed = JSON.parseObject("{\"name\":\"test\",\"count\":42}"); |
| 2701 | + assertEquals(built, parsed); |
| 2702 | + assertEquals(built.hashCode(), parsed.hashCode()); |
| 2703 | + } |
| 2704 | + |
| 2705 | + @Test |
| 2706 | + public void testObjectEqualsEmpty() { |
| 2707 | + assertEquals(new JSONObject(), JSON.parseObject("{}")); |
| 2708 | + } |
| 2709 | + |
| 2710 | + @Test |
| 2711 | + public void testObjectEqualsNested() { |
| 2712 | + JSONObject a = JSON.parseObject("{\"inner\":{\"x\":1}}"); |
| 2713 | + JSONObject b = JSON.parseObject("{\"inner\":{\"x\":1}}"); |
| 2714 | + assertEquals(a, b); |
| 2715 | + assertEquals(a.hashCode(), b.hashCode()); |
| 2716 | + } |
| 2717 | + |
| 2718 | + @Test |
| 2719 | + public void testObjectNotEqualsNull() { |
| 2720 | + assertNotEquals(new JSONObject(), null); |
| 2721 | + } |
| 2722 | + |
| 2723 | + @Test |
| 2724 | + public void testObjectNotEqualsOtherType() { |
| 2725 | + assertNotEquals(new JSONObject(), "{}"); |
| 2726 | + } |
| 2727 | + |
| 2728 | + @Test |
| 2729 | + public void testObjectEqualsSelf() { |
| 2730 | + JSONObject a = JSON.parseObject("{\"k\":1}"); |
| 2731 | + assertEquals(a, a); |
| 2732 | + } |
| 2733 | + |
| 2734 | + @Test |
| 2735 | + public void testObjectEqualsDifferentKeys() { |
| 2736 | + JSONObject a = JSON.parseObject("{\"a\":1}"); |
| 2737 | + JSONObject b = JSON.parseObject("{\"b\":1}"); |
| 2738 | + assertNotEquals(a, b); |
| 2739 | + } |
| 2740 | + |
| 2741 | + @Test |
| 2742 | + public void testObjectEqualsKeyOrderIndependent() { |
| 2743 | + // Jackson ObjectNode.equals is order-independent, same as Fastjson HashMap |
| 2744 | + JSONObject a = JSON.parseObject("{\"x\":1,\"y\":2}"); |
| 2745 | + JSONObject b = JSON.parseObject("{\"y\":2,\"x\":1}"); |
| 2746 | + assertEquals(a, b); |
| 2747 | + assertEquals(a.hashCode(), b.hashCode()); |
| 2748 | + } |
2612 | 2749 | } |
0 commit comments