ICU-21349 move testConverter from C++ to Java

See #1532
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java
index b3f38e2..d7ec361 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/impl/UnitsTest.java
@@ -224,9 +224,8 @@ class TestData {
         }
     }
 
-    // TODO(icu-units#92): add UnitsTest::testConverter(), to replace or extend this test.
     @Test
-    public void testConverterForTemperature() {
+    public void testConverter() {
         class TestData {
             MeasureUnitImpl source;
             MeasureUnitImpl target;
@@ -239,22 +238,56 @@ class TestData {
                 this.input = BigDecimal.valueOf(input);
                 this.expected = BigDecimal.valueOf(expected);
             }
-
         }
-
         TestData[] tests = {
+                // SI Prefixes
+                new TestData("gram", "kilogram", 1.0, 0.001),
+                new TestData("milligram", "kilogram", 1.0, 0.000001),
+                new TestData("microgram", "kilogram", 1.0, 0.000000001),
+                new TestData("megagram", "gram", 1.0, 1000000),
+                new TestData("megagram", "kilogram", 1.0, 1000),
+                new TestData("gigabyte", "byte", 1.0, 1000000000),
+                new TestData("megawatt", "watt", 1.0, 1000000),
+                new TestData("megawatt", "kilowatt", 1.0, 1000),
+                // Mass
+                new TestData("gram", "kilogram", 1.0, 0.001),
+                new TestData("pound", "kilogram", 1.0, 0.453592),
+                new TestData("pound", "kilogram", 2.0, 0.907185),
+                new TestData("ounce", "pound", 16.0, 1.0),
+                new TestData("ounce", "kilogram", 16.0, 0.453592),
+                new TestData("ton", "pound", 1.0, 2000),
+                new TestData("stone", "pound", 1.0, 14),
+                new TestData("stone", "kilogram", 1.0, 6.35029),
+                // Temperature
+                new TestData("celsius", "fahrenheit", 0.0, 32.0),
+                new TestData("celsius", "fahrenheit", 10.0, 50.0),
                 new TestData("celsius", "fahrenheit", 1000, 1832),
+                new TestData("fahrenheit", "celsius", 32.0, 0.0),
+                new TestData("fahrenheit", "celsius", 89.6, 32),
                 new TestData("fahrenheit", "fahrenheit", 1000, 1000),
+                new TestData("kelvin", "fahrenheit", 0.0, -459.67),
+                new TestData("kelvin", "fahrenheit", 300, 80.33),
+                new TestData("kelvin", "celsius", 0.0, -273.15),
+                new TestData("kelvin", "celsius", 300.0, 26.85),
+                // Area
+                new TestData("square-meter", "square-yard", 10.0, 11.9599),
+                new TestData("hectare", "square-yard", 1.0, 11959.9),
+                new TestData("square-mile", "square-foot", 0.0001, 2787.84),
+                new TestData("hectare", "square-yard", 1.0, 11959.9),
+                new TestData("hectare", "square-meter", 1.0, 10000),
+                new TestData("hectare", "square-meter", 0.0, 0.0),
+                new TestData("square-mile", "square-foot", 0.0001, 2787.84),
+                new TestData("square-yard", "square-foot", 10, 90),
+                new TestData("square-yard", "square-foot", 0, 0),
+                new TestData("square-yard", "square-foot", 0.000001, 0.000009),
+                new TestData("square-mile", "square-foot", 0.0, 0.0),
         };
 
         ConversionRates conversionRates = new ConversionRates();
-
-        for (TestData test :
-                tests) {
+        for (TestData test : tests) {
             UnitConverter converter = new UnitConverter(test.source, test.target, conversionRates);
             assertEquals(test.expected.doubleValue(), converter.convert(test.input).doubleValue(), (0.001));
         }
-
     }
 
     @Test