blob: 9cd0083f5584fba49f28ceba145114ca6e972a05 [file] [log] [blame]
package org.jetbrains.idea.maven.importing
import junit.framework.TestCase
import org.intellij.lang.annotations.Language
import org.jetbrains.idea.maven.utils.MavenUtil
/**
* @author Sergey Evdokimov
*/
class MavenXmlCrcTest extends TestCase {
public void testCrc() {
same("""
<project a="a" b="b">
</project>
""", """
<project a="a"
b="b" >
</project>
""");
same("""
<project>
<build><a>value</a></build>
</project>
""", """
<project>
<build>
<a>value</a>
</build>
</project>
""")
same("""
<project></project>
""", """
<project>
<!-- comment -->
</project>
"""
);
different("""
<project>
<a>foo</a>
</project>
""", """
<project>
<a>foo</a> text
</project>
""")
different("""
<project>
<a>foo</a>
</project>
""", """
<project>
<b>foo</b>
</project>
""")
same("""
<project>
<a>foo</a>
</project>
""", """
<project>
<a><!-- comment -->foo<!-- comment --></a>
</project>
""")
same("""
<project>
<a>foo</a>
</project>
""", """
<project>
<a>
<!-- comment -->foo<!-- comment -->
</a>
</project>
""")
same("""
<project>
<a>foo</a>
</project>
""", """
<project>
<a>fo<!-- comment -->o</a>
</project>
""")
same("""
<project>
ab <a/>cd
</project>
""", """
<project>
ab <a/> <!-- c --> cd
</project>
""")
different("""
<project>
<a>foo bar</a>
</project>
""", """
<project>
<a>foo bar</a>
</project>
""")
different("""
<project>
<a>foo bar</a>
</project>
""", """
<project>
<a>foo\tbar</a>
</project>
""")
different("""
<project>
<a>111</a>
</project>
""", """
<project>
<a>222</a>
</project>
""")
different("""
<project>
</project>
""", """
< project>
</project>
""")
// All invalid xmls are same
same("""
""", """
<project>
<sss>
</project>
""")
}
public void testInvalidXml() {
assert crc("""
< project>
</project>
""") == -1
assert crc("""
<project>
""") == -1
assert crc("""
<project>
<sss>
</project>
""") == -1
}
private static int crc(String text) {
return MavenUtil.crcWithoutSpaces(new ByteArrayInputStream(text.bytes))
}
private static void same(@Language("XML") String xml1, @Language("XML") String xml2) {
int crc1 = crc(xml1);
int crc2 = crc(xml2);
assert crc1 == crc2;
}
private static void different(@Language("XML") String xml1, @Language("XML") String xml2) {
int crc1 = crc(xml1);
int crc2 = crc(xml2);
assert crc1 != crc2;
}
}