View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.io.comparator;
18  
19  import static org.junit.jupiter.api.Assertions.assertEquals;
20  import static org.junit.jupiter.api.Assertions.assertNotNull;
21  import static org.junit.jupiter.api.Assertions.assertNull;
22  import static org.junit.jupiter.api.Assertions.assertSame;
23  import static org.junit.jupiter.api.Assertions.assertTrue;
24  
25  import java.io.File;
26  import java.util.ArrayList;
27  import java.util.Comparator;
28  import java.util.List;
29  
30  import org.junit.jupiter.api.Test;
31  import org.junit.jupiter.api.io.TempDir;
32  
33  /**
34   * Base Test case for Comparator implementations.
35   */
36  public abstract class ComparatorAbstractTest {
37  
38      @TempDir
39      public File dir;
40  
41      /** Comparator instance */
42      protected AbstractFileComparator comparator;
43  
44      /** Reverse comparator instance */
45      protected Comparator<File> reverse;
46  
47      /** File which compares equal to  "equalFile2" */
48      protected File equalFile1;
49  
50      /** File which compares equal to  "equalFile1" */
51      protected File equalFile2;
52  
53      /** File which is less than the "moreFile" */
54      protected File lessFile;
55  
56      /** File which is more than the "lessFile" */
57      protected File moreFile;
58  
59      /**
60       * Test the comparator.
61       */
62      @Test
63      public void testComparator() {
64          assertEquals(0, comparator.compare(equalFile1, equalFile2), "equal");
65          assertTrue(comparator.compare(lessFile, moreFile) < 0, "less");
66          assertTrue(comparator.compare(moreFile, lessFile) > 0, "more");
67      }
68  
69      /**
70       * Test the comparator reversed.
71       */
72      @Test
73      public void testReverseComparator() {
74          assertEquals(0, reverse.compare(equalFile1, equalFile2), "equal");
75          assertTrue(reverse.compare(moreFile, lessFile) < 0, "less");
76          assertTrue(reverse.compare(lessFile, moreFile) > 0, "more");
77      }
78  
79      /**
80       * Test the comparator array sort.
81       */
82      @Test
83      public void testSortArray() {
84          final File[] files = new File[3];
85          files[0] = equalFile1;
86          files[1] = moreFile;
87          files[2] = lessFile;
88          comparator.sort(files);
89          assertSame(lessFile, files[0], "equal");
90          assertSame(equalFile1, files[1], "less");
91          assertSame(moreFile, files[2], "more");
92      }
93  
94      /**
95       * Test comparator array sort is null safe.
96       */
97      @Test
98      public void testSortArrayNull() {
99          assertNull(comparator.sort((File[]) null));
100     }
101 
102     /**
103      * Test the comparator array sort.
104      */
105     @Test
106     public void testSortList() {
107         final List<File> files = new ArrayList<>();
108         files.add(equalFile1);
109         files.add(moreFile);
110         files.add(lessFile);
111         comparator.sort(files);
112         assertSame(lessFile, files.get(0), "equal");
113         assertSame(equalFile1, files.get(1), "less");
114         assertSame(moreFile, files.get(2), "more");
115     }
116 
117     /**
118      * Test comparator list sort is null safe.
119      */
120     @Test
121     public void testSortListNull() {
122         assertNull(comparator.sort((List<File>) null));
123     }
124 
125     /**
126      * Test comparator toString.
127      */
128     @Test
129     public void testToString() {
130         assertNotNull(comparator.toString(), "comparator");
131         assertTrue(reverse.toString().startsWith("ReverseFileComparator["), "reverse");
132     }
133 }