View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.commons.compress.compressors.xz;
20  
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertFalse;
23  import static org.junit.jupiter.api.Assertions.assertTrue;
24  
25  import org.junit.jupiter.api.Test;
26  
27  public class XZUtilsTest {
28  
29      @Test
30      public void testCachingIsEnabledByDefaultAndXZIsPresent() {
31          assertEquals(XZUtils.CachedAvailability.CACHED_AVAILABLE, XZUtils.getCachedXZAvailability());
32          assertTrue(XZUtils.isXZCompressionAvailable());
33      }
34  
35      @Test
36      public void testCanTurnOffCaching() {
37          try {
38              XZUtils.setCacheXZAvailablity(false);
39              assertEquals(XZUtils.CachedAvailability.DONT_CACHE, XZUtils.getCachedXZAvailability());
40              assertTrue(XZUtils.isXZCompressionAvailable());
41          } finally {
42              XZUtils.setCacheXZAvailablity(true);
43          }
44      }
45  
46      @SuppressWarnings("deprecation")
47      @Test
48      public void testGetCompressedFilename() {
49          assertEquals(".xz", XZUtils.getCompressedFilename(""));
50          assertEquals(".xz", XZUtils.getCompressedFileName(""));
51          assertEquals("x.xz", XZUtils.getCompressedFilename("x"));
52          assertEquals("x.xz", XZUtils.getCompressedFileName("x"));
53  
54          assertEquals("x.txz", XZUtils.getCompressedFilename("x.tar"));
55          assertEquals("x.txz", XZUtils.getCompressedFileName("x.tar"));
56  
57          assertEquals("x.wmf .xz", XZUtils.getCompressedFilename("x.wmf "));
58          assertEquals("x.wmf .xz", XZUtils.getCompressedFileName("x.wmf "));
59          assertEquals("x.wmf\n.xz", XZUtils.getCompressedFilename("x.wmf\n"));
60          assertEquals("x.wmf\n.xz", XZUtils.getCompressedFileName("x.wmf\n"));
61          assertEquals("x.wmf.y.xz", XZUtils.getCompressedFilename("x.wmf.y"));
62          assertEquals("x.wmf.y.xz", XZUtils.getCompressedFileName("x.wmf.y"));
63      }
64  
65      @SuppressWarnings("deprecation")
66      @Test
67      public void testGetUncompressedFilename() {
68          assertEquals("", XZUtils.getUncompressedFilename(""));
69          assertEquals("", XZUtils.getUncompressedFileName(""));
70          assertEquals(".xz", XZUtils.getUncompressedFilename(".xz"));
71  
72          assertEquals("x.tar", XZUtils.getUncompressedFilename("x.txz"));
73          assertEquals("x.tar", XZUtils.getUncompressedFileName("x.txz"));
74          assertEquals("x", XZUtils.getUncompressedFilename("x.xz"));
75          assertEquals("x", XZUtils.getUncompressedFileName("x.xz"));
76          assertEquals("x", XZUtils.getUncompressedFilename("x-xz"));
77          assertEquals("x", XZUtils.getUncompressedFileName("x-xz"));
78  
79          assertEquals("x.txz ", XZUtils.getUncompressedFilename("x.txz "));
80          assertEquals("x.txz ", XZUtils.getUncompressedFileName("x.txz "));
81          assertEquals("x.txz\n", XZUtils.getUncompressedFilename("x.txz\n"));
82          assertEquals("x.txz\n", XZUtils.getUncompressedFileName("x.txz\n"));
83          assertEquals("x.txz.y", XZUtils.getUncompressedFilename("x.txz.y"));
84          assertEquals("x.txz.y", XZUtils.getUncompressedFileName("x.txz.y"));
85      }
86  
87      @SuppressWarnings("deprecation")
88      @Test
89      public void testIsCompressedFilename() {
90          assertFalse(XZUtils.isCompressedFilename(""));
91          assertFalse(XZUtils.isCompressedFileName(""));
92          assertFalse(XZUtils.isCompressedFilename(".xz"));
93          assertFalse(XZUtils.isCompressedFileName(".xz"));
94  
95          assertTrue(XZUtils.isCompressedFilename("x.txz"));
96          assertTrue(XZUtils.isCompressedFileName("x.txz"));
97          assertTrue(XZUtils.isCompressedFilename("x.xz"));
98          assertTrue(XZUtils.isCompressedFileName("x.xz"));
99          assertTrue(XZUtils.isCompressedFilename("x-xz"));
100         assertTrue(XZUtils.isCompressedFileName("x-xz"));
101 
102         assertFalse(XZUtils.isCompressedFilename("xxgz"));
103         assertFalse(XZUtils.isCompressedFileName("xxgz"));
104         assertFalse(XZUtils.isCompressedFilename("xzz"));
105         assertFalse(XZUtils.isCompressedFileName("xzz"));
106         assertFalse(XZUtils.isCompressedFilename("xaz"));
107         assertFalse(XZUtils.isCompressedFileName("xaz"));
108 
109         assertFalse(XZUtils.isCompressedFilename("x.txz "));
110         assertFalse(XZUtils.isCompressedFileName("x.txz "));
111         assertFalse(XZUtils.isCompressedFilename("x.txz\n"));
112         assertFalse(XZUtils.isCompressedFileName("x.txz\n"));
113         assertFalse(XZUtils.isCompressedFilename("x.txz.y"));
114         assertFalse(XZUtils.isCompressedFileName("x.txz.y"));
115     }
116 
117     @Test
118     public void testMatches() {
119         final byte[] data = { (byte) 0xFD, '7', 'z', 'X', 'Z', '\0' };
120         assertFalse(XZUtils.matches(data, 5));
121         assertTrue(XZUtils.matches(data, 6));
122         assertTrue(XZUtils.matches(data, 7));
123         data[5] = '0';
124         assertFalse(XZUtils.matches(data, 6));
125     }
126 
127     @Test
128     public void testTurningOnCachingReEvaluatesAvailability() {
129         try {
130             XZUtils.setCacheXZAvailablity(false);
131             assertEquals(XZUtils.CachedAvailability.DONT_CACHE, XZUtils.getCachedXZAvailability());
132             XZUtils.setCacheXZAvailablity(true);
133             assertEquals(XZUtils.CachedAvailability.CACHED_AVAILABLE, XZUtils.getCachedXZAvailability());
134         } finally {
135             XZUtils.setCacheXZAvailablity(true);
136         }
137     }
138 
139 }