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   *   https://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.lzma;
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  /**
28   * Tests {@link LZMAUtils}.
29   */
30  class LZMAUtilsTest {
31  
32      @Test
33      void testCachingIsEnabledByDefaultAndLZMAIsPresent() {
34          assertEquals(LZMAUtils.CachedAvailability.CACHED_AVAILABLE, LZMAUtils.getCachedLZMAAvailability());
35          assertTrue(LZMAUtils.isLZMACompressionAvailable());
36      }
37  
38      @Test
39      void testCanTurnOffCaching() {
40          try {
41              LZMAUtils.setCacheLZMAAvailablity(false);
42              assertEquals(LZMAUtils.CachedAvailability.DONT_CACHE, LZMAUtils.getCachedLZMAAvailability());
43              assertTrue(LZMAUtils.isLZMACompressionAvailable());
44          } finally {
45              LZMAUtils.setCacheLZMAAvailablity(true);
46          }
47      }
48  
49      @SuppressWarnings("deprecation")
50      @Test
51      void testGetCompressedFilename() {
52          assertEquals(".lzma", LZMAUtils.getCompressedFilename(""));
53          assertEquals(".lzma", LZMAUtils.getCompressedFileName(""));
54          assertEquals("x.lzma", LZMAUtils.getCompressedFilename("x"));
55          assertEquals("x.lzma", LZMAUtils.getCompressedFileName("x"));
56  
57          assertEquals("x.wmf .lzma", LZMAUtils.getCompressedFilename("x.wmf "));
58          assertEquals("x.wmf .lzma", LZMAUtils.getCompressedFileName("x.wmf "));
59          assertEquals("x.wmf\n.lzma", LZMAUtils.getCompressedFilename("x.wmf\n"));
60          assertEquals("x.wmf\n.lzma", LZMAUtils.getCompressedFileName("x.wmf\n"));
61          assertEquals("x.wmf.y.lzma", LZMAUtils.getCompressedFilename("x.wmf.y"));
62          assertEquals("x.wmf.y.lzma", LZMAUtils.getCompressedFileName("x.wmf.y"));
63      }
64  
65      @SuppressWarnings("deprecation")
66      @Test
67      void testGetUncompressedFilename() {
68          assertEquals("", LZMAUtils.getUncompressedFilename(""));
69          assertEquals("", LZMAUtils.getUncompressedFileName(""));
70          assertEquals(".lzma", LZMAUtils.getUncompressedFilename(".lzma"));
71          assertEquals(".lzma", LZMAUtils.getUncompressedFileName(".lzma"));
72  
73          assertEquals("x", LZMAUtils.getUncompressedFilename("x.lzma"));
74          assertEquals("x", LZMAUtils.getUncompressedFileName("x.lzma"));
75          assertEquals("x", LZMAUtils.getUncompressedFilename("x-lzma"));
76          assertEquals("x", LZMAUtils.getUncompressedFileName("x-lzma"));
77  
78          assertEquals("x.lzma ", LZMAUtils.getUncompressedFilename("x.lzma "));
79          assertEquals("x.lzma ", LZMAUtils.getUncompressedFileName("x.lzma "));
80          assertEquals("x.lzma\n", LZMAUtils.getUncompressedFilename("x.lzma\n"));
81          assertEquals("x.lzma\n", LZMAUtils.getUncompressedFileName("x.lzma\n"));
82          assertEquals("x.lzma.y", LZMAUtils.getUncompressedFilename("x.lzma.y"));
83          assertEquals("x.lzma.y", LZMAUtils.getUncompressedFileName("x.lzma.y"));
84      }
85  
86      @SuppressWarnings("deprecation")
87      @Test
88      void testIsCompressedFilename() {
89          assertFalse(LZMAUtils.isCompressedFilename(""));
90          assertFalse(LZMAUtils.isCompressedFileName(""));
91          assertFalse(LZMAUtils.isCompressedFilename(".lzma"));
92          assertFalse(LZMAUtils.isCompressedFileName(".lzma"));
93  
94          assertTrue(LZMAUtils.isCompressedFilename("x.lzma"));
95          assertTrue(LZMAUtils.isCompressedFileName("x.lzma"));
96          assertTrue(LZMAUtils.isCompressedFilename("x-lzma"));
97          assertTrue(LZMAUtils.isCompressedFileName("x-lzma"));
98  
99          assertFalse(LZMAUtils.isCompressedFilename("xxgz"));
100         assertFalse(LZMAUtils.isCompressedFileName("xxgz"));
101         assertFalse(LZMAUtils.isCompressedFilename("lzmaz"));
102         assertFalse(LZMAUtils.isCompressedFileName("lzmaz"));
103         assertFalse(LZMAUtils.isCompressedFilename("xaz"));
104         assertFalse(LZMAUtils.isCompressedFileName("xaz"));
105 
106         assertFalse(LZMAUtils.isCompressedFilename("x.lzma "));
107         assertFalse(LZMAUtils.isCompressedFileName("x.lzma "));
108         assertFalse(LZMAUtils.isCompressedFilename("x.lzma\n"));
109         assertFalse(LZMAUtils.isCompressedFileName("x.lzma\n"));
110         assertFalse(LZMAUtils.isCompressedFilename("x.lzma.y"));
111         assertFalse(LZMAUtils.isCompressedFileName("x.lzma.y"));
112     }
113 
114     @Test
115     void testMatches() {
116         final byte[] data = { (byte) 0x5D, 0, 0, };
117         assertFalse(LZMAUtils.matches(data, 2));
118         assertTrue(LZMAUtils.matches(data, 3));
119         assertTrue(LZMAUtils.matches(data, 4));
120         data[2] = '0';
121         assertFalse(LZMAUtils.matches(data, 3));
122     }
123 
124     @Test
125     void testTurningOnCachingReEvaluatesAvailability() {
126         try {
127             LZMAUtils.setCacheLZMAAvailablity(false);
128             assertEquals(LZMAUtils.CachedAvailability.DONT_CACHE, LZMAUtils.getCachedLZMAAvailability());
129             LZMAUtils.setCacheLZMAAvailablity(true);
130             assertEquals(LZMAUtils.CachedAvailability.CACHED_AVAILABLE, LZMAUtils.getCachedLZMAAvailability());
131         } finally {
132             LZMAUtils.setCacheLZMAAvailablity(true);
133         }
134     }
135 
136 }