From 3edf9277e7c2828dc400ce265bbf7ff4bcdd2322 Mon Sep 17 00:00:00 2001 From: Nariman Abdullin Date: Thu, 20 Jun 2024 00:14:12 +0300 Subject: [PATCH] Override hashCode in Quantity ### What's done: - overrode `hashCode` in `Quantity` - added test which compares two sets of equal elements It closes #3490 --- .../io/kubernetes/client/custom/Quantity.java | 6 +++- .../client/custom/QuantityTest.java | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 kubernetes/src/test/java/io/kubernetes/client/custom/QuantityTest.java diff --git a/kubernetes/src/main/java/io/kubernetes/client/custom/Quantity.java b/kubernetes/src/main/java/io/kubernetes/client/custom/Quantity.java index 0f8880bdf8..8ab19aa875 100644 --- a/kubernetes/src/main/java/io/kubernetes/client/custom/Quantity.java +++ b/kubernetes/src/main/java/io/kubernetes/client/custom/Quantity.java @@ -85,10 +85,14 @@ public boolean equals(Object o) { } Quantity otherQuantity = (Quantity) o; - return ObjectUtils.compare(this.number, otherQuantity.number) == 0; } + @Override + public int hashCode() { + return Objects.hash(number); + } + public static class QuantityAdapter extends TypeAdapter { @Override public void write(JsonWriter jsonWriter, Quantity quantity) throws IOException { diff --git a/kubernetes/src/test/java/io/kubernetes/client/custom/QuantityTest.java b/kubernetes/src/test/java/io/kubernetes/client/custom/QuantityTest.java new file mode 100644 index 0000000000..f86ada4b2c --- /dev/null +++ b/kubernetes/src/test/java/io/kubernetes/client/custom/QuantityTest.java @@ -0,0 +1,33 @@ +/* +Copyright 2024 The Kubernetes Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package io.kubernetes.client.custom; + +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class QuantityTest { + + @Test + void containsInSet() { + final List values = List.of("0.5Gi", "0.5G", "1Gi", "1G", "500Mi", "500M", "500m", "0.5", "1"); + final Set set1 = values.stream().map(Quantity::fromString).collect(Collectors.toSet()); + final Set set2 = values.stream().map(Quantity::fromString).collect(Collectors.toSet()); + + assertEquals(set1, set2, "Sets of equal elements are not equal"); + } +}