From eea1b0114ab719abff5249f5ec1e1f9b4895aaf1 Mon Sep 17 00:00:00 2001 From: Gilles Sadowski Date: Tue, 2 Apr 2013 13:38:26 +0000 Subject: [PATCH] Unit tests. git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1463534 13f79535-47bb-0310-9956-ffa450edef68 --- .../ml/distance/CanberraDistanceTest.java | 48 +++++++++++++++++++ .../ml/distance/ChebyshevDistanceTest.java | 43 +++++++++++++++++ .../ml/distance/EuclideanDistanceTest.java | 43 +++++++++++++++++ .../ml/distance/ManhattanDistanceTest.java | 42 ++++++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 src/test/java/org/apache/commons/math3/ml/distance/CanberraDistanceTest.java create mode 100644 src/test/java/org/apache/commons/math3/ml/distance/ChebyshevDistanceTest.java create mode 100644 src/test/java/org/apache/commons/math3/ml/distance/EuclideanDistanceTest.java create mode 100644 src/test/java/org/apache/commons/math3/ml/distance/ManhattanDistanceTest.java diff --git a/src/test/java/org/apache/commons/math3/ml/distance/CanberraDistanceTest.java b/src/test/java/org/apache/commons/math3/ml/distance/CanberraDistanceTest.java new file mode 100644 index 000000000..339e51703 --- /dev/null +++ b/src/test/java/org/apache/commons/math3/ml/distance/CanberraDistanceTest.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.commons.math3.ml.distance; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests for {@link CanberraDistance} class. + */ +public class CanberraDistanceTest { + final DistanceMeasure distance = new CanberraDistance(); + + @Test + public void testZero() { + final double[] a = { 0, 1, -2, 3.4, 5, -6.7, 89 }; + Assert.assertEquals(0, distance.compute(a, a), 0d); + } + + @Test + public void testZero2() { + final double[] a = { 0, 0 }; + Assert.assertEquals(0, distance.compute(a, a), 0d); + } + + @Test + public void test() { + final double[] a = { 1, 2, 3, 4, 9 }; + final double[] b = { -5, -6, 7, 4, 3 }; + final double expected = 2.9; + Assert.assertEquals(expected, distance.compute(a, b), 0d); + Assert.assertEquals(expected, distance.compute(b, a), 0d); + } +} diff --git a/src/test/java/org/apache/commons/math3/ml/distance/ChebyshevDistanceTest.java b/src/test/java/org/apache/commons/math3/ml/distance/ChebyshevDistanceTest.java new file mode 100644 index 000000000..95f60a701 --- /dev/null +++ b/src/test/java/org/apache/commons/math3/ml/distance/ChebyshevDistanceTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.commons.math3.ml.distance; + +import org.junit.Assert; +import org.junit.Test; +import org.apache.commons.math3.util.FastMath; + +/** + * Tests for {@link ChebyshevDistance} class. + */ +public class ChebyshevDistanceTest { + final DistanceMeasure distance = new ChebyshevDistance(); + + @Test + public void testZero() { + final double[] a = { 0, 1, -2, 3.4, 5, -6.7, 89 }; + Assert.assertEquals(0, distance.compute(a, a), 0d); + } + + @Test + public void test() { + final double[] a = { 1, 2, 3, 4 }; + final double[] b = { -5, -6, 7, 8 }; + final double expected = 8; + Assert.assertEquals(expected, distance.compute(a, b), 0d); + Assert.assertEquals(expected, distance.compute(b, a), 0d); + } +} diff --git a/src/test/java/org/apache/commons/math3/ml/distance/EuclideanDistanceTest.java b/src/test/java/org/apache/commons/math3/ml/distance/EuclideanDistanceTest.java new file mode 100644 index 000000000..13ec4c598 --- /dev/null +++ b/src/test/java/org/apache/commons/math3/ml/distance/EuclideanDistanceTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.commons.math3.ml.distance; + +import org.junit.Assert; +import org.junit.Test; +import org.apache.commons.math3.util.FastMath; + +/** + * Tests for {@link EuclideanDistance} class. + */ +public class EuclideanDistanceTest { + final DistanceMeasure distance = new EuclideanDistance(); + + @Test + public void testZero() { + final double[] a = { 0, 1, -2, 3.4, 5, -6.7, 89 }; + Assert.assertEquals(0, distance.compute(a, a), 0d); + } + + @Test + public void test() { + final double[] a = { 1, -2, 3, 4 }; + final double[] b = { -5, -6, 7, 8 }; + final double expected = FastMath.sqrt(84); + Assert.assertEquals(expected, distance.compute(a, b), 0d); + Assert.assertEquals(expected, distance.compute(b, a), 0d); + } +} diff --git a/src/test/java/org/apache/commons/math3/ml/distance/ManhattanDistanceTest.java b/src/test/java/org/apache/commons/math3/ml/distance/ManhattanDistanceTest.java new file mode 100644 index 000000000..2a74c77eb --- /dev/null +++ b/src/test/java/org/apache/commons/math3/ml/distance/ManhattanDistanceTest.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.commons.math3.ml.distance; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests for {@link ManhattanDistance} class. + */ +public class ManhattanDistanceTest { + final DistanceMeasure distance = new ManhattanDistance(); + + @Test + public void testZero() { + final double[] a = { 0, 1, -2, 3.4, 5, -6.7, 89 }; + Assert.assertEquals(0, distance.compute(a, a), 0d); + } + + @Test + public void test() { + final double[] a = { 1, -2, 3, 4 }; + final double[] b = { -5, -6, 7, 8 }; + final double expected = 18; + Assert.assertEquals(expected, distance.compute(a, b), 0d); + Assert.assertEquals(expected, distance.compute(b, a), 0d); + } +}