EMMA Coverage Report (generated Sat Oct 08 11:41:37 CEST 2011)
[all classes][net.sf.jomic.tools]

COVERAGE SUMMARY FOR SOURCE FILE [ArchiveCacheTest.java]

nameclass, %method, %block, %line, %
ArchiveCacheTest.java100% (1/1)100% (11/11)89%  (349/391)96%  (76.6/80)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ArchiveCacheTest100% (1/1)100% (11/11)89%  (349/391)96%  (76.6/80)
createCacheXmlString (ArchiveCache): String 100% (1/1)64%  (16/25)87%  (5.2/6)
putTestCacheEntry (ArchiveCache, ArchiveCacheEntry): void 100% (1/1)65%  (15/23)80%  (4/5)
createTestCacheEntry (ArchiveCache, File): ArchiveCacheEntry 100% (1/1)76%  (26/34)83%  (5/6)
<static initializer> 100% (1/1)80%  (12/15)80%  (0.8/1)
testWriteAndRead (): void 100% (1/1)91%  (60/66)98%  (19.7/20)
createTestCache (): ArchiveCache 100% (1/1)93%  (67/72)99%  (11.9/12)
testSetMaxSize (): void 100% (1/1)97%  (91/94)100% (15.9/16)
ArchiveCacheTest (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (9/9)100% (4/4)
tearDown (): void 100% (1/1)100% (6/6)100% (3/3)
testEntry (): void 100% (1/1)100% (44/44)100% (7/7)

1// Jomic - a viewer for comic book archives.
2// Copyright (C) 2004-2011 Thomas Aglassinger
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16package net.sf.jomic.tools;
17 
18import java.io.File;
19import java.io.IOException;
20import java.io.StringReader;
21import java.io.StringWriter;
22 
23import junit.framework.TestCase;
24 
25import org.xml.sax.SAXException;
26 
27/**
28 *  TestCase for ArchiveCache and ArchiveCacheEntry.
29 *
30 * @author    Thomas Aglassinger
31 */
32public class ArchiveCacheTest extends TestCase
33{
34    private static final int TEST_CACHE_SIZE = 64 * 1024 * 1024;
35    private TestTools testTools;
36 
37    protected void setUp()
38        throws Exception {
39        super.setUp();
40        testTools = TestTools.instance();
41        testTools.setupCache();
42    }
43 
44    public void testEntry() {
45        ArchiveCacheEntry entry = new ArchiveCacheEntry(testTools.getTestComicFile(), 0x12345678);
46        String sep = File.separator;
47        String expectedPathSuffix = "12" + sep + "34" + sep + "56" + sep + "78";
48        String actualPath = entry.getCachedDirName();
49        String actualPathSuffix = actualPath.substring(actualPath.length() - expectedPathSuffix.length());
50 
51        assertEquals(expectedPathSuffix, actualPathSuffix);
52    }
53 
54    public void testSetMaxSize()
55        throws IOException {
56        ArchiveCache cache = createTestCache();
57        int oldEntryCount = cache.getEntryCount();
58        long oldUsedSize = cache.getUsedSize();
59 
60        assertTrue("oldEntryCount=" + oldEntryCount, (oldEntryCount > 1));
61        assertTrue("oldUsedSize=" + oldUsedSize, (oldUsedSize > 0));
62 
63        // Increase the cache
64        cache.setMaxSize(2 * cache.getMaxSize());
65 
66        int increasedEntryCount = cache.getEntryCount();
67        long increasedUsedSize = cache.getUsedSize();
68 
69        assertEquals("increasedEntryCount", oldEntryCount, increasedEntryCount);
70        assertEquals("increasedUsedSize", oldUsedSize, increasedUsedSize);
71 
72        cache.setMaxSize(0);
73 
74        int reducedEntryCount = cache.getEntryCount();
75        long reducedUsedSize = cache.getUsedSize();
76 
77        assertEquals("reducedEntryCount", 1, reducedEntryCount);
78        assertTrue("oldUsedSize=" + oldUsedSize + ", reducedUsedSize=" + reducedUsedSize,
79                (reducedUsedSize < oldUsedSize));
80    }
81 
82    public void testWriteAndRead()
83        throws IOException, SAXException {
84        ArchiveCache cache = createTestCache();
85 
86        int writtenEntryCount = cache.getEntryCount();
87 
88        String textWritten = createCacheXmlString(cache);
89 
90        assertTrue(textWritten.length() > 0);
91 
92        StringReader reader = new StringReader(textWritten);
93 
94        try {
95            cache.readEntries(reader);
96        } finally {
97            reader.close();
98        }
99 
100        int readEntryCount = cache.getEntryCount();
101 
102        assertEquals(writtenEntryCount, readEntryCount);
103 
104        String textWrittenAgain = createCacheXmlString(cache);
105 
106        assertEquals(textWritten, textWrittenAgain);
107 
108        cache.clear();
109        assertEquals(0, cache.getEntryCount());
110        cache.attemptToReadEntries();
111        assertEquals(0, cache.getEntryCount());
112        cache.writeEntries();
113 
114        cache = createTestCache();
115        cache.writeEntries();
116    }
117 
118    protected void tearDown()
119        throws Exception {
120        testTools = null;
121        super.tearDown();
122    }
123 
124    private String createCacheXmlString(ArchiveCache cache)
125        throws IOException {
126        StringWriter writer = new StringWriter();
127        String textWritten;
128 
129        try {
130            cache.writeEntries(writer);
131        } finally {
132            textWritten = writer.getBuffer().toString();
133            writer.close();
134        }
135        return textWritten;
136    }
137 
138    private ArchiveCache createTestCache()
139        throws IOException {
140        File cacheDir = new File(System.getProperty("java.io.tmpdir"), ArchiveCacheTest.class.getName());
141        ArchiveCache result = new ArchiveCache(cacheDir, TEST_CACHE_SIZE);
142 
143        result.clear();
144 
145        ArchiveCacheEntry entry1 = createTestCacheEntry(result, testTools.getTestFile("3pages.cbz"));
146 
147        assertEquals(0, entry1.getIndex());
148        putTestCacheEntry(result, entry1);
149        assertEquals("usedSize", entry1.getSize(), result.getUsedSize());
150 
151        ArchiveCacheEntry entry2 = createTestCacheEntry(result, testTools.getTestFile("2pages.cbz"));
152 
153        assertEquals(1, entry2.getIndex());
154        putTestCacheEntry(result, entry2);
155        assertEquals("usedSize", entry1.getSize() + entry2.getSize(), result.getUsedSize());
156 
157        return result;
158    }
159 
160    private ArchiveCacheEntry createTestCacheEntry(ArchiveCache cache, File archiveFile)
161        throws IOException {
162        assert cache != null;
163        assert archiveFile != null;
164        ArchiveCacheEntry result = cache.createCacheEntry(archiveFile);
165        FileArchive archive = new FileArchive(archiveFile);
166 
167        archive.extract(cache.getCacheEntryDir(result), archive.list());
168 
169        return result;
170    }
171 
172    private void putTestCacheEntry(ArchiveCache cache, ArchiveCacheEntry entry) {
173        assert cache != null;
174        assert entry != null;
175 
176        cache.put(entry);
177        cache.setCacheEntrySize(entry);
178    }
179}

[all classes][net.sf.jomic.tools]
EMMA 2.0.4217 (C) Vladimir Roubtsov