From 809460c99dde55a0c6a903a752d5440f97b6acd3 Mon Sep 17 00:00:00 2001 From: "Kai.Yuan" Date: Wed, 24 Apr 2024 00:53:33 +0200 Subject: [PATCH 1/2] [int-to-short] int to short --- .../core-java-numbers-conversions-2/README.md | 1 + .../core-java-numbers-conversions-2/pom.xml | 14 ++++++++ .../inttoshort/ConvertIntToShortUnitTest.java | 36 +++++++++++++++++++ core-java-modules/pom.xml | 1 + 4 files changed, 52 insertions(+) create mode 100644 core-java-modules/core-java-numbers-conversions-2/README.md create mode 100644 core-java-modules/core-java-numbers-conversions-2/pom.xml create mode 100644 core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java diff --git a/core-java-modules/core-java-numbers-conversions-2/README.md b/core-java-modules/core-java-numbers-conversions-2/README.md new file mode 100644 index 0000000000..7d843af9ea --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions-2/README.md @@ -0,0 +1 @@ +### Relevant Articles: diff --git a/core-java-modules/core-java-numbers-conversions-2/pom.xml b/core-java-modules/core-java-numbers-conversions-2/pom.xml new file mode 100644 index 0000000000..b1c87df510 --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions-2/pom.xml @@ -0,0 +1,14 @@ + + 4.0.0 + core-java-numbers-conversions-2 + jar + core-java-numbers-conversions-2 + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + diff --git a/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java b/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java new file mode 100644 index 0000000000..667677d2dd --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.inttoshort; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class ConvertIntToShortUnitTest { + + @Test + void whenUsingCasting_thenCorrect() { + short expected = 42; + int i = 42; + short result = (short) i; + assertEquals(expected, result); + } + + @Test + void whenUsingIntegerShortValue_thenCorrect() { + short expected = 42; + Integer intObj = 42; + short result = intObj.shortValue(); + assertEquals(expected, result); + } + + @Test + void whenIntOutOfShortRange_thenGetTheUnexpectedResult() { + int oneMillion = 1_000_000; + short result = (short) oneMillion; + assertEquals(16960, result); + + int twoMillion = 2_000_000; + result = (short) twoMillion; + assertEquals(-31616, result); + } + +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index f6c5f8191a..9f90248d13 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -36,6 +36,7 @@ core-java-numbers-conversions + core-java-numbers-conversions-2 core-java-9-improvements core-java-9-streams core-java-9 From 7b3b52c224096a988f0be74007fdb385578bf188 Mon Sep 17 00:00:00 2001 From: "Kai.Yuan" Date: Wed, 24 Apr 2024 21:28:19 +0200 Subject: [PATCH 2/2] [int-to-short] add intToShort() --- .../inttoshort/ConvertIntToShortUnitTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java b/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java index 667677d2dd..123c799b4a 100644 --- a/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java +++ b/core-java-modules/core-java-numbers-conversions-2/src/test/java/com/baeldung/inttoshort/ConvertIntToShortUnitTest.java @@ -1,6 +1,7 @@ package com.baeldung.inttoshort; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; @@ -33,4 +34,22 @@ class ConvertIntToShortUnitTest { assertEquals(-31616, result); } + short intToShort(int i) { + if (i < Short.MIN_VALUE || i > Short.MAX_VALUE) { + throw new IllegalArgumentException("Int is out of short range"); + } + return (short) i; + } + + @Test + void whenCheckShortRangeBeforeCasting_thenGetExpectedResult() { + short expected = 42; + int int42 = 42; + assertEquals(expected, intToShort(int42)); + + int oneMillion = 1_000_000; + assertThrows(IllegalArgumentException.class, () -> intToShort(oneMillion)); + + } + } \ No newline at end of file