⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 versioningfileprovidertest.java

📁 jspwiki source code,jspwiki source code
💻 JAVA
字号:
package com.ecyrd.jspwiki.providers;import junit.framework.*;import java.io.*;import java.util.*;import com.ecyrd.jspwiki.*;// FIXME: Should this thingy go directly to the VersioningFileProvider,//        or should it rely on the WikiEngine API?public class VersioningFileProviderTest extends TestCase{    public static final String NAME1 = "Test1";    Properties props = new Properties();    TestEngine engine;    public VersioningFileProviderTest( String s )    {        super( s );    }    public void setUp()        throws Exception    {        props.load( TestEngine.findTestProperties("/jspwiki_vers.properties") );        engine = new TestEngine(props);    }    public void tearDown()    {        String files = props.getProperty( FileSystemProvider.PROP_PAGEDIR );        // Remove file        File f = new File( files, NAME1+FileSystemProvider.FILE_EXT );        f.delete();        f = new File( files, "OLD" );        TestEngine.deleteAll(f);    }    /**     *  Checks if migration from FileSystemProvider to VersioningFileProvider     *  works by creating a dummy file without corresponding content in OLD/     */    public void testMigration()        throws IOException    {        String files = props.getProperty( FileSystemProvider.PROP_PAGEDIR );                File f = new File( files, NAME1+FileSystemProvider.FILE_EXT );        Writer out = new FileWriter( f );        FileUtil.copyContents( new StringReader("foobar"), out );        out.close();        String res = engine.getText( NAME1 );        assertEquals( "latest did not work", "foobar", res );        res = engine.getText( NAME1, 1 ); // Should be the first version.        assertEquals( "fetch by direct version did not work", "foobar", res );    }    public void testMillionChanges()        throws Exception    {        String text = "";        String name = NAME1;        int    maxver = 100; // Save 100 versions.        for( int i = 0; i < maxver; i++ )        {            text = text + ".";            engine.saveText( name, text );        }        WikiPage pageinfo = engine.getPage( NAME1 );        assertEquals( "wrong version", maxver, pageinfo.getVersion() );                // +2 comes from \r\n.        assertEquals( "wrong text", maxver+2, engine.getText(NAME1).length() );    }    public void testCheckin()        throws Exception    {        String text = "diddo\r\n";        engine.saveText( NAME1, text );        String res = engine.getText(NAME1);               assertEquals( text, res );    }    public void testGetByVersion()        throws Exception    {        String text = "diddo\r\n";        engine.saveText( NAME1, text );        WikiPage page = engine.getPage( NAME1, 1 );               assertEquals( "name", NAME1, page.getName() );        assertEquals( "version", 1, page.getVersion() );    }    public void testPageInfo()        throws Exception    {        String text = "diddo\r\n";        engine.saveText( NAME1, text );        WikiPage res = engine.getPage(NAME1);               assertEquals( 1, res.getVersion() );    }    public void testGetOldVersion()        throws Exception    {        String text = "diddo\r\n";        String text2 = "barbar\r\n";        String text3 = "Barney\r\n";        engine.saveText( NAME1, text );        engine.saveText( NAME1, text2 );        engine.saveText( NAME1, text3 );        WikiPage res = engine.getPage(NAME1);        assertEquals("wrong version", 3, res.getVersion() );        assertEquals("ver1", text, engine.getText( NAME1, 1 ) );        assertEquals("ver2", text2, engine.getText( NAME1, 2 ) );        assertEquals("ver3", text3, engine.getText( NAME1, 3 ) );    }    public void testGetOldVersion2()        throws Exception    {        String text = "diddo\r\n";        String text2 = "barbar\r\n";        String text3 = "Barney\r\n";        engine.saveText( NAME1, text );        engine.saveText( NAME1, text2 );        engine.saveText( NAME1, text3 );        WikiPage res = engine.getPage(NAME1);        assertEquals("wrong version", 3, res.getVersion() );        assertEquals("ver1", 1, engine.getPage( NAME1, 1 ).getVersion() );        assertEquals("ver2", 2, engine.getPage( NAME1, 2 ).getVersion() );        assertEquals("ver3", 3, engine.getPage( NAME1, 3 ).getVersion() );}    /**     *  2.0.7 and before got this wrong.     */    public void testGetOldVersionUTF8()        throws Exception    {        String text = "\u00e5\u00e4\u00f6\r\n";        String text2 = "barbar\u00f6\u00f6\r\n";        String text3 = "Barney\u00e4\u00e4\r\n";        engine.saveText( NAME1, text );        engine.saveText( NAME1, text2 );        engine.saveText( NAME1, text3 );        WikiPage res = engine.getPage(NAME1);        assertEquals("wrong version", 3, res.getVersion() );        assertEquals("ver1", text, engine.getText( NAME1, 1 ) );        assertEquals("ver2", text2, engine.getText( NAME1, 2 ) );        assertEquals("ver3", text3, engine.getText( NAME1, 3 ) );    }    public void testNonexistantPage()    {        assertNull( engine.getPage("fjewifjeiw") );    }    public void testVersionHistory()        throws Exception    {        String text = "diddo\r\n";        String text2 = "barbar\r\n";        String text3 = "Barney\r\n";        engine.saveText( NAME1, text );        engine.saveText( NAME1, text2 );        engine.saveText( NAME1, text3 );        Collection history = engine.getVersionHistory(NAME1);        assertEquals( "size", 3, history.size() );    }    public void testDelete()        throws Exception    {        engine.saveText( NAME1, "v1" );        engine.saveText( NAME1, "v2" );        engine.saveText( NAME1, "v3" );        PageManager mgr = engine.getPageManager();        WikiPageProvider provider = mgr.getProvider();        provider.deletePage( NAME1 );        String files = props.getProperty( FileSystemProvider.PROP_PAGEDIR );        File f = new File( files, NAME1+FileSystemProvider.FILE_EXT );        assertFalse( "file exists", f.exists() );        f = new File( files, NAME1+".properties" );        assertFalse( "RCS file exists", f.exists() );    }    public void testDeleteVersion()        throws Exception    {        engine.saveText( NAME1, "v1\r\n" );        engine.saveText( NAME1, "v2\r\n" );        engine.saveText( NAME1, "v3\r\n" );        PageManager mgr = engine.getPageManager();        WikiPageProvider provider = mgr.getProvider();        List l = provider.getVersionHistory( NAME1 );        assertEquals( "wrong # of versions", 3, l.size() );        provider.deleteVersion( NAME1, 2 );        l = provider.getVersionHistory( NAME1 );        assertEquals( "wrong # of versions", 2, l.size() );        assertEquals( "v1", "v1\r\n", provider.getPageText( NAME1, 1 ) );        assertEquals( "v3", "v3\r\n", provider.getPageText( NAME1, 3 ) );        try        {            provider.getPageText( NAME1, 2 );            fail( "v2" );        }        catch( NoSuchVersionException e )        {            // This is expected        }    }    public void testChangeNote()        throws Exception    {        WikiPage p = new WikiPage( engine, NAME1 );        p.setAttribute(WikiPage.CHANGENOTE, "Test change" );        WikiContext context = new WikiContext(engine,p);                engine.saveText( context, "test" );                WikiPage p2 = engine.getPage( NAME1 );                assertEquals( "Test change", p2.getAttribute(WikiPage.CHANGENOTE) );    }    public void testChangeNoteOldVersion()        throws Exception    {        WikiPage p = new WikiPage( engine, NAME1 );                        WikiContext context = new WikiContext(engine,p);        context.getPage().setAttribute(WikiPage.CHANGENOTE, "Test change" );        engine.saveText( context, "test" );                context.getPage().setAttribute(WikiPage.CHANGENOTE, "Change 2" );        engine.saveText( context, "test2" );                WikiPage p2 = engine.getPage( NAME1, 1 );                assertEquals( "Test change", p2.getAttribute(WikiPage.CHANGENOTE) );        WikiPage p3 = engine.getPage( NAME1, 2 );                assertEquals( "Change 2", p3.getAttribute(WikiPage.CHANGENOTE) );    }    public void testChangeNoteOldVersion2() throws Exception    {        WikiPage p = new WikiPage( engine, NAME1 );            WikiContext context = new WikiContext(engine,p);        context.getPage().setAttribute( WikiPage.CHANGENOTE, "Test change" );                engine.saveText( context, "test" );        for( int i = 0; i < 5; i++ )        {            WikiPage p2 = (WikiPage)engine.getPage( NAME1 ).clone();            p2.removeAttribute(WikiPage.CHANGENOTE);            context.setPage( p2 );            engine.saveText( context, "test"+i );        }        WikiPage p3 = engine.getPage( NAME1, -1 );            assertEquals( null, p3.getAttribute(WikiPage.CHANGENOTE) );    }    public static Test suite()    {        return new TestSuite( VersioningFileProviderTest.class );    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -