From e0e2a61dfcf5d039f178dcbaa54301c6da27cba3 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Sat, 11 Feb 2017 06:19:58 -0800 Subject: [PATCH] Use Float.compare in java equals Summary: Handles nans. Also if the unit is undefined there is no need to check the value. Reviewed By: astreet Differential Revision: D4531805 fbshipit-source-id: 723e15381e9fa39837a4c99f726501eda26af11b --- java/com/facebook/yoga/YogaValue.java | 4 ++- .../com/facebook/yoga/YogaValueTest.java | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 java/tests/com/facebook/yoga/YogaValueTest.java diff --git a/java/com/facebook/yoga/YogaValue.java b/java/com/facebook/yoga/YogaValue.java index 1110eded..f9c0ebfc 100644 --- a/java/com/facebook/yoga/YogaValue.java +++ b/java/com/facebook/yoga/YogaValue.java @@ -33,7 +33,9 @@ public class YogaValue { public boolean equals(Object other) { if (other instanceof YogaValue) { final YogaValue otherValue = (YogaValue) other; - return value == otherValue.value && unit == otherValue.unit; + if (unit == otherValue.unit) { + return unit == YogaUnit.UNDEFINED || Float.compare(value, otherValue.value) == 0; + } } return false; } diff --git a/java/tests/com/facebook/yoga/YogaValueTest.java b/java/tests/com/facebook/yoga/YogaValueTest.java new file mode 100644 index 00000000..e299ecbc --- /dev/null +++ b/java/tests/com/facebook/yoga/YogaValueTest.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.yoga; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class YogaValueTest { + + @Test + public void testEquals() { + assertEquals(new YogaValue(0, YogaUnit.UNDEFINED), new YogaValue(0, YogaUnit.UNDEFINED)); + assertEquals(new YogaValue(0, YogaUnit.PIXEL), new YogaValue(0, YogaUnit.PIXEL)); + assertEquals(new YogaValue(0, YogaUnit.PERCENT), new YogaValue(0, YogaUnit.PERCENT)); + assertEquals(new YogaValue(0, YogaUnit.UNDEFINED), new YogaValue(1, YogaUnit.UNDEFINED)); + assertEquals(new YogaValue(Float.NaN, YogaUnit.PIXEL), new YogaValue(Float.NaN, YogaUnit.PIXEL)); + } +}