/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.rendering;
import org.junit.Test;
import org.springframework.util.StopWatch;
import static org.junit.Assert.*;
public class RenderedWindowResultTest
{
@Test
public void testStripNamespacesNoNamespace()
{
RenderedWindowResult result = new RenderedWindowResult();
result.setContent( createNoNamespaceContent() );
result.stripXHTMLNamespaces();
assertEquals( createNoNamespaceContent(), result.getContent() );
}
private String createNoNamespaceContent()
{
return "<html><title>test</title></html >";
}
@Test
public void testStripNamespacesWithNamespace()
{
RenderedWindowResult result = new RenderedWindowResult();
result.setContent( createContentWithNameSpaces() );
result.stripXHTMLNamespaces();
assertEquals( "<html><title>test</title></html><html >\" <html lang=\"en\" >", result.getContent() );
}
@Test
public void testLotsOfWhiteSpaces()
{
RenderedWindowResult result = new RenderedWindowResult();
result.setContent( createContentWithNameSpaces( 50000 ) );
StopWatch timer = new StopWatch();
timer.start( "strip" );
result.stripXHTMLNamespaces();
timer.stop();
System.out.println( timer.prettyPrint() );
assertEquals( "<html><title>test</title></html><html >\" <html lang=\"en\" >", result.getContent().trim() );
}
private String createContentWithNameSpaces()
{
StringBuilder builder = new StringBuilder();
builder.append(
"<html><title>test</title></html><html xmlns=\"http://www.w3.org/1999/xhtml\">\" <html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">" );
return builder.toString();
}
private String createContentWithNameSpaces( int numberOfWhitespaces )
{
StringBuilder builder = new StringBuilder();
for ( int i = 0; i < numberOfWhitespaces; i++ )
{
builder.append( " " );
}
builder.append(
"<html><title>test</title></html><html xmlns=\"http://www.w3.org/1999/xhtml\">\" <html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">" );
for ( int i = 0; i < numberOfWhitespaces; i++ )
{
builder.append( " " );
}
return builder.toString();
}
}