blob: d2fe2a718068022473de9c0e72c99ee93d1209b0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.tmf.chart.core.tests.consumer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.function.Predicate;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.internal.provisional.tmf.chart.core.descriptor.IDataChartDescriptor;
import org.eclipse.tracecompass.internal.provisional.tmf.chart.core.resolver.INumericalResolver;
import org.eclipse.tracecompass.internal.tmf.chart.core.consumer.NumericalConsumer;
import org.eclipse.tracecompass.tmf.chart.core.tests.stubs.StubChartProvider;
import org.eclipse.tracecompass.tmf.chart.core.tests.stubs.StubObject;
import org.junit.Test;
/**
* Test the {@link NumericalConsumer} class
*
* @author Geneviève Bastien
*/
public class NumericalConsumerTest {
private final @NonNull StubChartProvider fProvider = new StubChartProvider();
/**
* Test the numerical consumer with only the resolver. It should not accept
* null values
*/
@Test
public void testResolver() {
IDataChartDescriptor<StubObject, ?> descriptor = fProvider.getDataDescriptor(StubChartProvider.LONG_DESCRIPTOR);
NumericalConsumer consumer = new NumericalConsumer(INumericalResolver.class.cast(descriptor.getResolver()));
// Test with a first object
StubObject obj = new StubObject("str", 1, 10L, 10.0);
assertTrue(consumer.test(obj));
consumer.accept(obj);
assertEquals(Long.valueOf(10L), consumer.getData().get(0));
// Test with a second object
obj = new StubObject("str", 1, 20L, 10.0);
assertTrue(consumer.test(obj));
consumer.accept(obj);
assertEquals(Long.valueOf(20L), consumer.getData().get(1));
obj = new StubObject("str", 1, null, 10.0);
assertFalse(consumer.test(obj));
// Test eh minimum and maximum values
assertEquals(Long.valueOf(10L), consumer.getMin());
assertEquals(Long.valueOf(20L), consumer.getMax());
}
/**
* Test the numerical consumer with only the resolver and predicate.
*/
@Test
public void testWithPredicate() {
IDataChartDescriptor<StubObject, ?> descriptor = fProvider.getDataDescriptor(StubChartProvider.LONG_DESCRIPTOR);
Predicate<@Nullable Number> predicate = d -> true;
NumericalConsumer consumer = new NumericalConsumer(INumericalResolver.class.cast(descriptor.getResolver()), predicate);
StubObject obj = new StubObject("str", 1, 10L, 10.0);
assertTrue(consumer.test(obj));
consumer.accept(obj);
assertEquals(Long.valueOf(10L), consumer.getData().get(0));
obj = new StubObject("str", 1, null, 10.0);
assertTrue(consumer.test(obj));
consumer.accept(obj);
assertEquals(Long.valueOf(0L), consumer.getData().get(1));
}
}