/*
* Copyright 2021 eddiemuc
* Copyright 2021 devemux86
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see .
*/
package org.oscim.theme;
import org.junit.Assert;
import org.junit.Test;
import org.oscim.utils.IOUtils;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.zip.ZipInputStream;
public class ZipXmlThemeResourceProviderTest {
@Test
public void openZip() throws IOException {
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(ZipXmlThemeResourceProviderTest.class.getResourceAsStream("/xmlthemetest.zip")));
Assert.assertNotNull(zis);
ZipXmlThemeResourceProvider zts = new ZipXmlThemeResourceProvider(zis);
// All files contained
Assert.assertNotNull(zts.createInputStream(null, "file:one.xml"));
Assert.assertNotNull(zts.createInputStream(null, "file:two.xml"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/three.xml"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/blue_star_1.svg"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/test.txt"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/sub/four.xml"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/sub/blue_star_sub_1.svg"));
Assert.assertNotNull(zts.createInputStream(null, "file:res/sub/blue_star_sub_2.svg"));
//Relative Reference ok
Assert.assertNotNull(zts.createInputStream("", "file:res/sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream("res", "file:sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream("/", "file:res/sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream("/res", "file:sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream("res/", "file:/sub/blue_star_sub_2.svg"));
// Can get same files using various other formats
Assert.assertNotNull(zts.createInputStream(null, "res/sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream(null, "/res/sub/blue_star_sub_2.svg"));
Assert.assertNotNull(zts.createInputStream(null, "file:/res/sub/blue_star_sub_2.svg"));
// Dirs NOT contained!
Assert.assertNull(zts.createInputStream(null, "file:res/"));
Assert.assertEquals(8, zts.getCount());
List xmlThemes = zts.getXmlThemes();
Assert.assertEquals(4, xmlThemes.size());
Assert.assertTrue(xmlThemes.contains("one.xml"));
Assert.assertTrue(xmlThemes.contains("two.xml"));
Assert.assertTrue(xmlThemes.contains("res/three.xml"));
Assert.assertTrue(xmlThemes.contains("res/sub/four.xml"));
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(zts.createInputStream(null, "file:res/test.txt")));
String line = reader.readLine();
Assert.assertEquals(line, "This is a test");
} finally {
IOUtils.closeQuietly(reader);
}
}
@Test
public void openEmpty() throws IOException {
Assert.assertTrue(new ZipXmlThemeResourceProvider(null).getXmlThemes().isEmpty());
}
}