/*******************************************************************************
* Copyright (c) 2006-2012
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
* - initial API and implementation
******************************************************************************/
package org.reuseware.sokan.test.misc.cases;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.reuseware.sokan.ID;
import org.reuseware.sokan.index.CommitCache;
import org.reuseware.sokan.index.util.StoreUtil;
import org.reuseware.sokan.test.util.ResourceCacheData;
import org.reuseware.sokan.test.util.TestUtil;
/**
* @author Matthias Schmidt
*
*/
public class ResourceCacheTestCase {
private ResourceCacheData data = new ResourceCacheData();
@Before
public void setUp() throws Exception {
data.project = TestUtil.createProject(this.getClass().getSimpleName());
TestUtil.createFolder("dir1", data.project, data);
TestUtil.createFolder("dir2", data.project, data);
TestUtil.createArtifactFile("r1", data.dir1, data);
TestUtil.createArtifactFile("u1", data.dir2, data);
TestUtil.mark(new File[] { data.dir1, data.dir2 });
data.cache1 = new CommitCache();
data.cache2 = new CommitCache();
}
@Test
public void testExtractUpdAndNewIDs() throws IOException {
assertTrue(data.u1.exists());
assertTrue(StoreUtil.INSTANCE.isInStore(TestUtil.fileAsURI(data.u1)));
assertTrue(data.a1 == null);
// update
String s = "Some New Content";
FileWriter writer = new FileWriter(data.u1);
writer.append(s);
writer.flush();
writer.close();
// add
TestUtil.createArtifactFile("a1", data.dir2, data);
assertTrue(data.u1.exists());
assertTrue(StoreUtil.INSTANCE.isInStore(TestUtil.fileAsURI(data.u1)));
assertTrue(data.a1.exists());
assertTrue(StoreUtil.INSTANCE.isInStore(TestUtil.fileAsURI(data.a1)));
data.cache2.getUpdatedResources().add(TestUtil.fileAsURI(data.u1));
data.cache2.getNewResources().add(TestUtil.fileAsURI(data.a1));
List<ID> ids = new LinkedList<ID>(data.cache2.extractUpdAndNewIDs());
assertFalse(ids.size() == 0);
assertEquals(data.a1.getName(), ids.get(0).getSegments().get(0));
assertEquals(data.u1.getName(), ids.get(1).getSegments().get(0));
}
@Test
public void testExtractAllIDs() throws IOException {
assertTrue(data.r1.exists());
assertTrue(StoreUtil.INSTANCE.isInStore(TestUtil.fileAsURI(data.r1)));
// remove
data.r1.delete();
assertFalse(data.r1.exists());
assertTrue(StoreUtil.INSTANCE.isInStore(TestUtil.fileAsURI(data.r1)));
data.cache1.getDeletedResources().add(TestUtil.fileAsURI(data.r1));
List<ID> ids = new LinkedList<ID>(data.cache1.extractAllIDs());
assertFalse(ids.size() == 0);
assertEquals(data.r1.getName(), ids.get(0).getSegments().get(0));
}
}