/*
* Copyright 2015 Igor Maznitsa.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.igormaznitsa.mindmap.model;
import java.io.File;
import java.net.URI;
import java.util.Properties;
import org.apache.commons.lang.SystemUtils;
import org.junit.Test;
import static org.junit.Assert.*;
public class ModelUtilsTest {
@Test
public void testExtractQueryParameters() throws Exception {
final Properties properties = ModelUtils.extractQueryPropertiesFromURI(new URI("file://hello?some=test&other=&misc=%26ffsdsd&h=1"));
assertEquals(4, properties.size());
assertEquals("test", properties.get("some"));
assertEquals("", properties.get("other"));
assertEquals("&ffsdsd", properties.get("misc"));
assertEquals("1", properties.get("h"));
}
@Test
public void testExtractQueryParameters_Empty() throws Exception {
final Properties properties = ModelUtils.extractQueryPropertiesFromURI(new URI("file://hello"));
assertTrue(properties.isEmpty());
}
@Test
public void testMakeQueryStringForURI() throws Exception {
final Properties props = new Properties();
assertEquals("", ModelUtils.makeQueryStringForURI(null));
assertEquals("", ModelUtils.makeQueryStringForURI(props));
props.put("test", "hello test");
assertEquals("test=hello+test", ModelUtils.makeQueryStringForURI(props));
props.put("&key", "&value some");
assertEquals("%26key=%26value+some&test=hello+test", ModelUtils.makeQueryStringForURI(props));
}
@Test
public void testCalcMaxLengthOfBacktickQuotesSubstr() throws Exception {
assertEquals(0, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("akldjf lsdkjf"));
assertEquals(0, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr(null));
assertEquals(1, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("akl`djf lsdk`jf"));
assertEquals(1, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("akl`djf lsdk`\n`jf"));
assertEquals(2, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("akl`djf lsdk``jf"));
assertEquals(3, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("akl`djf lsdk``jf```"));
assertEquals(3, ModelUtils.calcMaxLengthOfBacktickQuotesSubstr("```"));
}
@Test
public void testUnescapeMarkdownStr() {
assertEquals("Hello\nWorld", ModelUtils.unescapeMarkdownStr("Hello<br>World"));
assertEquals("<>\n", ModelUtils.unescapeMarkdownStr("\\<\\><br>"));
assertEquals("\\`*_{}[]()#<>+-.!\n", ModelUtils.unescapeMarkdownStr("\\\\\\`\\*\\_\\{\\}\\[\\]\\(\\)\\#\\<\\>\\+\\-\\.\\!<br/>"));
assertEquals("Hello `<\nWorld>`", ModelUtils.unescapeMarkdownStr("Hello \\`<<br/>World\\>\\`"));
assertEquals("", ModelUtils.unescapeMarkdownStr(""));
}
@Test
public void testEscapeMarkdownStr() {
assertEquals("Hello<br/>World", ModelUtils.escapeMarkdownStr("Hello\nWorld"));
assertEquals("\\\\\\`\\*\\_\\{\\}\\[\\]\\(\\)\\#\\<\\>\\+\\-\\.\\!<br/>", ModelUtils.escapeMarkdownStr("\\`*_{}[]()#<>+-.!\n"));
assertEquals("Hello \\`\\<<br/>World\\>\\`", ModelUtils.escapeMarkdownStr("Hello `<\nWorld>`"));
assertEquals("", ModelUtils.escapeMarkdownStr(""));
}
@Test
public void testMakeFileForPath() throws Exception {
assertNull(ModelUtils.makeFileForPath(null));
assertNull(ModelUtils.makeFileForPath(""));
assertEquals(new File((File) null, "/some/who/files/2012-11-02 13.47.10.jpg").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/who/files/2012-11-02 13.47.10.jpg").getAbsolutePath());
assertEquals(new File((File) null, "/some/who/files/2012-11-02 13.47.10.jpg").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/who/files/2012-11-02%2013.47.10.jpg").getAbsolutePath());
assertEquals(new File((File) null, "/some/who/files/main.c++").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/who/files/main.c++").getAbsolutePath());
assertEquals(new File((File) null, "/some/folder/temp/").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/folder/temp/").getAbsolutePath());
if (SystemUtils.IS_OS_LINUX) {
assertEquals(new File((File) null, "/some/folder/temp/ :<>?").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/folder/temp/ :<>?").getAbsolutePath());
assertEquals(new File((File) null, "/some/folder&ssd/temp/ :<>?test=jks&lls=1").getCanonicalPath(), ModelUtils.makeFileForPath("file:///some/folder&ssd/temp/ :<>?test=jks&lls=1").getAbsolutePath());
}
assertEquals("src/main/java/com/igormaznitsa/nbmindmap/nb/QuickSearchProvider.java".replace('/', File.separatorChar), ModelUtils.makeFileForPath("src/main/java/com/igormaznitsa/nbmindmap/nb/QuickSearchProvider.java").getPath());
}
@Test
public void testToFile() throws Exception{
if (SystemUtils.IS_OS_WINDOWS)
assertEquals("P:\\Some text document.txt",new MMapURI("file://P:/Some%20text%20document.txt").asFile(null).getAbsolutePath());
else
assertEquals("/Some text document.txt",new MMapURI("file:///Some%20text%20document.txt").asFile(null).getAbsolutePath());
}
}