// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2006 by R. Pito Salas
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this program;
// if not, write to the Free Software Foundation, Inc., 59 Temple Place,
// Suite 330, Boston, MA 02111-1307 USA
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: TestManager.java,v 1.3 2007/03/30 08:33:38 spyromus Exp $
//
package com.salas.bb.plugins;
import static com.salas.bb.plugins.Manager.KEY_PLUGINS_PACKAGES;
import static com.salas.bb.plugins.Manager.KEY_PLUGINS_PACKAGES_TS;
import com.salas.bb.utils.StringUtils;
import junit.framework.TestCase;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
* Tests plug-ins manager.
*/
public class TestManager extends TestCase
{
private Preferences prefs;
@Override
protected void setUp() throws Exception
{
super.setUp();
prefs = Preferences.userNodeForPackage(TestManager.class);
prefs.clear();
}
public void testStoreState()
{
Map<String, Object> p = new HashMap<String, Object>();
Manager.initialize(new File("."), prefs);
// Store fake keys
String pk = "test";
long ts = 1234L;
prefs.put(KEY_PLUGINS_PACKAGES, pk);
prefs.putLong(KEY_PLUGINS_PACKAGES_TS, ts);
Manager.storeState(p);
assertEquals(pk, StringUtils.fromUTF8((byte[])p.get(KEY_PLUGINS_PACKAGES)));
assertEquals(Long.toString(ts), StringUtils.fromUTF8((byte[])p.get(KEY_PLUGINS_PACKAGES_TS)));
}
public void testRestoreState()
throws BackingStoreException
{
Map<String, Object> p = new HashMap<String, Object>();
Manager.initialize(new File("."), prefs);
// Test data
String pk0 = "test0.jar";
String pk1 = "test1.jar";
long ts0 = 1234L;
long ts1 = 4321L;
// 1. p has no info, prefs has no info
Manager.restoreState(p);
assertNull(prefs.get(KEY_PLUGINS_PACKAGES, null));
assertNull(prefs.get(KEY_PLUGINS_PACKAGES_TS, null));
// 2. p has no info, prefs has
setPrefs(pk0, ts0);
Manager.restoreState(p);
assertPrefs(pk0, ts0);
// 3. p has info, prefs doesn't
prefs.clear();
setPrefs(p, pk0, ts0);
Manager.restoreState(p);
assertPrefs(pk0, ts0);
// 4. p is earlier than prefs
setPrefs(pk1, ts1);
setPrefs(p, pk0, ts0);
Manager.restoreState(p);
assertPrefs(pk1, ts1);
// 4. p is later than prefs
setPrefs(pk0, ts0);
setPrefs(p, pk1, ts1);
Manager.restoreState(p);
assertPrefs(pk1, ts1);
}
private void assertPrefs(String pkgs, long ts)
{
assertEquals(pkgs, prefs.get(KEY_PLUGINS_PACKAGES, null));
assertEquals(ts, prefs.getLong(KEY_PLUGINS_PACKAGES_TS, -1));
}
private void setPrefs(Map<String, Object> p, String pkgs, long ts)
{
p.put(KEY_PLUGINS_PACKAGES, pkgs.getBytes());
p.put(KEY_PLUGINS_PACKAGES_TS, Long.toString(ts).getBytes());
}
private void setPrefs(String pkgs, long ts)
throws BackingStoreException
{
prefs.clear();
prefs.put(KEY_PLUGINS_PACKAGES, pkgs);
prefs.putLong(KEY_PLUGINS_PACKAGES_TS, ts);
}
}