/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import java.util.ArrayList;
import java.util.List;
-
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Predicate;
import org.junit.Test;
-
import org.onap.policy.models.base.testconcepts.DummyPfObject;
+import org.onap.policy.models.base.testconcepts.DummyPfObjectComparator;
import org.onap.policy.models.base.testconcepts.DummyPfObjectFilter;
/**
*/
public class PfObjectFilterTest {
+ private static final String NAME1 = "name1";
+ private static final String NAME0 = "name0";
+ private static final String HELLO = "Hello";
+ private static final String DESCRIPTION1 = "Desc 1";
+ private static final String VERSION100 = "1.0.0";
+ private static final String VERSION002 = "0.0.2";
+
@Test
public void testPfObjectInterface() {
+ DummyPfObjectFilter dof = new DummyPfObjectFilter();
+ assertFalse(dof.filterString(HELLO, "Goodbye"));
+ assertTrue(dof.filterString(HELLO, HELLO));
+
+ assertFalse(dof.filterString(HELLO, "Goodbye"));
+ assertTrue(dof.filterString(HELLO, HELLO));
+ assertTrue(dof.filterString(HELLO, null));
+
+ List<DummyPfObject> doList = getListPfObject();
+ List<DummyPfObject> latestVersionList = dof.latestVersionFilter(doList, new DummyPfObjectComparator());
+ assertEquals(3, latestVersionList.size());
+ assertEquals("aaaaa", latestVersionList.get(0).getName());
+ assertEquals(VERSION002, latestVersionList.get(0).getVersion());
+ assertEquals(NAME0, latestVersionList.get(1).getName());
+ assertEquals(VERSION100, latestVersionList.get(1).getVersion());
+ assertEquals(NAME1, latestVersionList.get(2).getName());
+ assertEquals("0.1.2", latestVersionList.get(2).getVersion());
+
+ latestVersionList.remove(2);
+ latestVersionList.remove(1);
+ List<DummyPfObject> newestVersionList = dof.latestVersionFilter(latestVersionList,
+ new DummyPfObjectComparator());
+ assertEquals(latestVersionList, newestVersionList);
+ }
+
+ @Test
+ public void testStringFilteredPfObjectInterface() {
+ List<DummyPfObject> doList = getListPfObject();
+ MyFilter filter = new MyFilter();
+
+ assertTrue(filter.filterString(null, HELLO));
+
+ DummyPfObject do0 = doList.get(0);
+ DummyPfObject do5 = doList.get(5);
+ DummyPfObject doNullVersion = new DummyPfObject();
+ do5.setName("bbbbb");
+
+ assertFalse(filter(filter::filterStringPred, DummyPfObject::getVersion, doNullVersion, VERSION100));
+ assertFalse(filter(filter::filterStringPred, DummyPfObject::getVersion, do0, "1"));
+ assertFalse(filter(filter::filterStringPred, DummyPfObject::getVersion, do0, "2.0.0"));
+ assertTrue(filter(filter::filterStringPred, DummyPfObject::getVersion, doNullVersion, null));
+ assertTrue(filter(filter::filterStringPred, DummyPfObject::getVersion, do0, null));
+ assertTrue(filter(filter::filterStringPred, DummyPfObject::getVersion, do0, VERSION100));
+ }
+
+ @Test
+ public void testPrefixFilteredPfObjectInterface() {
+
+ DummyPfObject doNullVersion = new DummyPfObject();
+ MyFilter filter = new MyFilter();
+
+ List<DummyPfObject> doList = getListPfObject();
+ DummyPfObject do0 = doList.get(0);
+
+ assertFalse(filter(filter::filterPrefixPred, DummyPfObject::getVersion, doNullVersion, "1."));
+ assertFalse(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.1"));
+ assertFalse(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.1"));
+ assertFalse(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "2"));
+ assertTrue(filter(filter::filterPrefixPred, DummyPfObject::getVersion, doNullVersion, null));
+ assertTrue(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, null));
+ assertTrue(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1."));
+ assertTrue(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.0."));
+ assertTrue(filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, VERSION100));
+ }
+
+ @Test
+ public void testRegexFilteredPfObjectInterface() {
+ List<DummyPfObject> doList = getListPfObject();
+ DummyPfObject do0 = doList.get(0);
+
+ MyFilter filter = new MyFilter();
+ DummyPfObject doNullVersion = new DummyPfObject();
+
+ assertFalse(filter(filter::filterRegexpPred, DummyPfObject::getVersion, doNullVersion, "1[.].*"));
+ assertFalse(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "2[.].*"));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, doNullVersion, null));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, null));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.].*"));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.]0[.].*"));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.]0[.]0"));
+ assertTrue(filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1...."));
+ }
+
+ private List<DummyPfObject> getListPfObject() {
DummyPfObject do0 = new DummyPfObject();
- do0.setName("name0");
- do0.setVersion("1.0.0");
+ do0.setName(NAME0);
+ do0.setVersion(VERSION100);
do0.setDescription("desc0 ");
DummyPfObject do1 = new DummyPfObject();
- do1.setName("name0");
+ do1.setName(NAME0);
do1.setVersion("0.0.1");
- do1.setDescription("Desc 1");
+ do1.setDescription(DESCRIPTION1);
DummyPfObject do2 = new DummyPfObject();
- do2.setName("name0");
- do2.setVersion("0.0.2");
- do2.setDescription("Desc 1");
+ do2.setName(NAME0);
+ do2.setVersion(VERSION002);
+ do2.setDescription(DESCRIPTION1);
DummyPfObject do3 = new DummyPfObject();
- do3.setName("name1");
+ do3.setName(NAME1);
do3.setVersion("0.0.1");
do3.setDescription("desc0 ");
DummyPfObject do4 = new DummyPfObject();
- do4.setName("name1");
+ do4.setName(NAME1);
do4.setVersion("0.1.2");
- do4.setDescription("Desc 1");
+ do4.setDescription(DESCRIPTION1);
DummyPfObject do5 = new DummyPfObject();
do5.setName("aaaaa");
- do5.setVersion("0.0.2");
- do5.setDescription("Desc 1");
+ do5.setVersion(VERSION002);
+ do5.setDescription(DESCRIPTION1);
List<DummyPfObject> doList = new ArrayList<>();
doList.add(do0);
doList.add(do4);
doList.add(do5);
- DummyPfObjectFilter dof = new DummyPfObjectFilter();
- assertFalse(dof.filterString("Hello", "Goodbye"));
- assertTrue(dof.filterString("Hello", "Hello"));
-
- assertEquals(false, dof.filterString("Hello", "Goodbye"));
- assertEquals(true, dof.filterString("Hello", "Hello"));
- assertEquals(true, dof.filterString("Hello", null));
+ return doList;
+ }
- List<DummyPfObject> latestVersionList = dof.latestVersionFilter(doList);
- assertEquals(3, latestVersionList.size());
- assertEquals("aaaaa", latestVersionList.get(0).getName());
- assertEquals("0.0.2", latestVersionList.get(0).getVersion());
- assertEquals("name0", latestVersionList.get(1).getName());
- assertEquals("1.0.0", latestVersionList.get(1).getVersion());
- assertEquals("name1", latestVersionList.get(2).getName());
- assertEquals("0.1.2", latestVersionList.get(2).getVersion());
+ private boolean filter(BiFunction<String, Function<DummyPfObject, String>, Predicate<DummyPfObject>> predMaker,
+ Function<DummyPfObject, String> extractor, DummyPfObject dpo, String text) {
+ Predicate<DummyPfObject> pred = predMaker.apply(text, extractor);
+ return pred.test(dpo);
+ }
- latestVersionList.remove(2);
- latestVersionList.remove(1);
- List<DummyPfObject> newestVersionList = dof.latestVersionFilter(latestVersionList);
- assertEquals(latestVersionList, newestVersionList);
+ private static class MyFilter implements PfObjectFilter<DummyPfObject> {
+ @Override
+ public List<DummyPfObject> filter(List<DummyPfObject> originalList) {
+ return null;
+ }
}
}