/* * Copyright (C) 2015 SoftIndex LLC. * * 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.datakernel.jmx; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static io.datakernel.jmx.JmxReducers.*; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class JmxReducersTest { @Test public void distinctReducerReturnsCommonValueIfAllValuesAreSame() { JmxReducerDistinct reducer = new JmxReducerDistinct(); List<String> input = asList("data", "data", "data"); assertEquals("data", reducer.reduce(input)); } @Test public void distinctReducerReturnsNullIfThereAreAtLeastTwoDifferentValuesInInputList() { JmxReducerDistinct reducer = new JmxReducerDistinct(); List<String> input = asList("data", "non-data", "data"); assertNull(reducer.reduce(input)); } @Test public void sumReducerWorksCorrectlyWithIntegerNumbers() { JmxReducerSum sumReducer = new JmxReducerSum(); List<Integer> numbers = new ArrayList<>(); numbers.add(10); numbers.add(15); int result = (int) sumReducer.reduce(numbers); assertEquals(25, result); } @Test public void sumReducerWorksCorrectlyWithFloatingPointNumbers() { JmxReducerSum sumReducer = new JmxReducerSum(); List<Double> numbers = new ArrayList<>(); numbers.add(5.0); numbers.add(2.5); double result = (double) sumReducer.reduce(numbers); double acceptableError = 10E-3; assertEquals(7.5, result, acceptableError); } @Test public void sumReducerIgnoresNullValues() { JmxReducerSum sumReducer = new JmxReducerSum(); List<Integer> numbers = new ArrayList<>(); numbers.add(10); numbers.add(null); numbers.add(15); int result = (int) sumReducer.reduce(numbers); assertEquals(25, result); } @Test public void sumReducerReturnsNullInCaseOfEmptyList() { JmxReducerSum sumReducer = new JmxReducerSum(); List<Number> numbers = new ArrayList<>(); assertNull(sumReducer.reduce(numbers)); } @Test public void minReducerWorksCorrectlyWithFloatingPointNumbers() { JmxReducerMin minReducer = new JmxReducerMin(); List<Number> numbers = new ArrayList<>(); numbers.add(5.0); numbers.add(2.5); numbers.add(10.0); double result = (double) minReducer.reduce(numbers); double acceptableError = 10E-3; assertEquals(2.5, result, acceptableError); } @Test public void minReducerWorksCorrectlyWithIntegerNumbers() { JmxReducerMin minReducer = new JmxReducerMin(); List<Integer> numbers = new ArrayList<>(); numbers.add(5); numbers.add(2); numbers.add(10); int result = (int) minReducer.reduce(numbers); assertEquals(2, result); } @Test public void minReducerReturnsNullInCaseOfEmptyList() { JmxReducerMin minReducer = new JmxReducerMin(); List<Number> numbers = new ArrayList<>(); assertNull(minReducer.reduce(numbers)); } @Test public void maxReducerWorksCorrectlyWithFloatingPointNumbers() { JmxReducerMax maxReducer = new JmxReducerMax(); List<Double> numbers = new ArrayList<>(); numbers.add(5.0); numbers.add(2.5); numbers.add(10.0); double result = (double) maxReducer.reduce(numbers); double acceptableError = 10E-3; assertEquals(10.0, result, acceptableError); } @Test public void maxReducerWorksCorrectlyWithIntegerNumbers() { JmxReducerMax maxReducer = new JmxReducerMax(); List<Long> numbers = new ArrayList<>(); numbers.add(5L); numbers.add(2L); numbers.add(10L); long result = (long) maxReducer.reduce(numbers); assertEquals(10L, result); } @Test public void maxReducerReturnsNullInCaseOfEmptyList() { JmxReducerMin maxReducer = new JmxReducerMin(); List<Number> numbers = new ArrayList<>(); assertNull(maxReducer.reduce(numbers)); } }