Remove unused imports
[policy/models.git] / models-base / src / test / java / org / onap / policy / models / base / PfObjectFilterTest.java
index c3ccb4a..68cae43 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 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.
 
 package org.onap.policy.models.base;
 
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 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;
 
 /**
@@ -40,37 +42,44 @@ 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() {
         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);
@@ -81,28 +90,72 @@ public class PfObjectFilterTest {
         doList.add(do5);
 
         DummyPfObjectFilter dof = new DummyPfObjectFilter();
-        assertFalse(dof.filterOnRegexp("Hello", "Goodbye"));
-        assertTrue(dof.filterOnRegexp("Hello", "Hello"));
-
-        assertThatThrownBy(() -> {
-            dof.filterOnRegexp(null, null);
-        }).hasMessage("value is marked @NonNull but is null");
-
-        assertThatThrownBy(() -> {
-            dof.filterOnRegexp("hello", null);
-        }).hasMessage("regexp is marked @NonNull but is null");
+        assertFalse(dof.filterString(HELLO, "Goodbye"));
+        assertTrue(dof.filterString(HELLO, HELLO));
 
-        assertThatThrownBy(() -> {
-            dof.filterOnRegexp(null, "hello");
-        }).hasMessage("value is marked @NonNull but is null");
+        assertEquals(false, dof.filterString(HELLO, "Goodbye"));
+        assertEquals(true, dof.filterString(HELLO, HELLO));
+        assertEquals(true, dof.filterString(HELLO, null));
 
-        List<DummyPfObject> latestVersionList = dof.latestVersionFilter(doList);
+        List<DummyPfObject> latestVersionList = dof.latestVersionFilter(doList, new DummyPfObjectComparator());
         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(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);
+
+        MyFilter filter = new MyFilter();
+
+        assertEquals(true, filter.filterString(null, HELLO));
+
+        DummyPfObject doNullVersion = new DummyPfObject();
+        do5.setName("bbbbb");
+
+        assertEquals(false, filter(filter::filterStringPred, DummyPfObject::getVersion, doNullVersion, VERSION100));
+        assertEquals(false, filter(filter::filterStringPred, DummyPfObject::getVersion, do0, "1"));
+        assertEquals(false, filter(filter::filterStringPred, DummyPfObject::getVersion, do0, "2.0.0"));
+        assertEquals(true, filter(filter::filterStringPred, DummyPfObject::getVersion, doNullVersion, null));
+        assertEquals(true, filter(filter::filterStringPred, DummyPfObject::getVersion, do0, null));
+        assertEquals(true, filter(filter::filterStringPred, DummyPfObject::getVersion, do0, VERSION100));
+
+        assertEquals(false, filter(filter::filterPrefixPred, DummyPfObject::getVersion, doNullVersion, "1."));
+        assertEquals(false, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.1"));
+        assertEquals(false, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.1"));
+        assertEquals(false, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "2"));
+        assertEquals(true, filter(filter::filterPrefixPred, DummyPfObject::getVersion, doNullVersion, null));
+        assertEquals(true, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, null));
+        assertEquals(true, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1."));
+        assertEquals(true, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, "1.0."));
+        assertEquals(true, filter(filter::filterPrefixPred, DummyPfObject::getVersion, do0, VERSION100));
+
+        assertEquals(false, filter(filter::filterRegexpPred, DummyPfObject::getVersion, doNullVersion, "1[.].*"));
+        assertEquals(false, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "2[.].*"));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, doNullVersion, null));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, null));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.].*"));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.]0[.].*"));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1[.]0[.]0"));
+        assertEquals(true, filter(filter::filterRegexpPred, DummyPfObject::getVersion, do0, "1...."));
+    }
+
+    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);
+    }
+
+    private static class MyFilter implements PfObjectFilter<DummyPfObject> {
+        @Override
+        public List<DummyPfObject> filter(List<DummyPfObject> originalList) {
+            return null;
+        }
     }
 }