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