From 99aae351d52e2f5efcbec5325d71f112140495fe Mon Sep 17 00:00:00 2001 From: Michael Bar-Sinai Date: Thu, 28 Jan 2021 02:00:28 +0200 Subject: [PATCH] JS-equals handles java.util.Set as well (closes #144, again) --- .../bgu/cs/bp/bpjs/internal/ScriptableUtils.java | 4 ++++ .../cs/bp/bpjs/internal/ScriptableUtilsTest.java | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtils.java b/src/main/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtils.java index 0731a2d4..16c8f989 100644 --- a/src/main/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtils.java +++ b/src/main/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtils.java @@ -80,6 +80,10 @@ public static boolean jsEquals(Object o1, Object o2) { return jsListEquals((List)o1, (List)o2); } + if ( o1 instanceof Set && o2 instanceof Set ) { + return jsSetEquals((Set)o1, (Set)o2); + } + // Concatenated strings in Rhino are not java.lang.Strings. We need to manually // resolve to String semantics, which is what the following lines do. if (o1 instanceof ConsString) { diff --git a/src/test/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtilsTest.java b/src/test/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtilsTest.java index 10139635..a5d7d79f 100644 --- a/src/test/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtilsTest.java +++ b/src/test/java/il/ac/bgu/cs/bp/bpjs/internal/ScriptableUtilsTest.java @@ -239,14 +239,14 @@ public void testJsEquals_Set() { jsExp("[42, 'dark castle', 'kings quest']") ); - assertTrue( ScriptableUtils.jsSetEquals(mpA, mpAb)); - assertTrue( ScriptableUtils.jsSetEquals(mpA, mpA)); - assertTrue( ScriptableUtils.jsSetEquals(null, null)); + assertTrue( ScriptableUtils.jsEquals(mpA, mpAb)); + assertTrue( ScriptableUtils.jsEquals(mpA, mpA)); + assertTrue( ScriptableUtils.jsEquals(null, null)); - assertFalse( ScriptableUtils.jsSetEquals(mpA, null)); - assertFalse( ScriptableUtils.jsSetEquals(mpA, mpAdim)); - assertFalse( ScriptableUtils.jsSetEquals(mpA, mpB)); - assertFalse( ScriptableUtils.jsSetEquals(mpA, mpC)); + assertFalse( ScriptableUtils.jsEquals(mpA, null)); + assertFalse( ScriptableUtils.jsEquals(mpA, mpAdim)); + assertFalse( ScriptableUtils.jsEquals(mpA, mpB)); + assertFalse( ScriptableUtils.jsEquals(mpA, mpC)); }