/*
* Copyright (C) 2016 RankSys http://ranksys.org
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.ranksys.fast.preference;
import es.uam.eps.ir.ranksys.fast.preference.IdxPref;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* Unit test for StreamsAbstractFastPreferenceData.
*
* @author Saúl Vargas (Saul@VargasSandoval.es)
*/
public class StreamsAbstractFastPreferenceDataTest {
/**
* Tests main functionalities of the class.
*/
@Test
public void simpleTest() {
StreamsAbstractFastPreferenceData<Integer, Integer> preferences = new MockPreferenceDataTest<>();
List<Integer> idxs = new ArrayList<>();
List<Double> vs = new ArrayList<>();
preferences.getUidxIidxs(0).forEachRemaining(idxs::add);
assertEquals(idxs, Arrays.asList(8, 9, 11, 12, 35, 45));
preferences.getUidxVs(0).forEachRemaining(vs::add);
assertEquals(vs, Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0, 6.0));
idxs.clear();
vs.clear();
preferences.getIidxUidxs(0).forEachRemaining(idxs::add);
assertEquals(idxs, Arrays.asList(18, 20, 100, 101, 102));
preferences.getIidxVs(0).forEachRemaining(vs::add);
assertEquals(vs, Arrays.asList(6.0, 5.0, 4.0, 3.0, 2.0));
}
private static class MockPreferenceDataTest<U, I> extends StreamsAbstractFastPreferenceData<U, I> {
public MockPreferenceDataTest() {
super(null, null);
}
@Override
public int numUsers(int iidx) {
return 5;
}
@Override
public int numItems(int uidx) {
return 6;
}
@Override
public IntStream getUidxWithPreferences() {
throw new UnsupportedOperationException("Not needed here.");
}
@Override
public IntStream getIidxWithPreferences() {
throw new UnsupportedOperationException("Not needed here.");
}
@Override
public Stream<? extends IdxPref> getUidxPreferences(int uidx) {
return Stream.of(
new IdxPref(8, 1.0),
new IdxPref(9, 2.0),
new IdxPref(11, 3.0),
new IdxPref(12, 4.0),
new IdxPref(35, 5.0),
new IdxPref(45, 6.0)
);
}
@Override
public Stream<? extends IdxPref> getIidxPreferences(int iidx) {
return Stream.of(
new IdxPref(18, 6.0),
new IdxPref(20, 5.0),
new IdxPref(100, 4.0),
new IdxPref(101, 3.0),
new IdxPref(102, 2.0)
);
}
@Override
public int numPreferences() {
throw new UnsupportedOperationException("Not needed here.");
}
}
}