/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.builder.internal.incremental;
import junit.framework.TestCase;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
public class DependencyDataStoreTest extends TestCase {
public void testStoreSingleData() throws IOException {
// create a DependencyData object.
DependencyData data = new DependencyData();
data.setMainFile("/main/file");
data.addSecondaryFile("/secondary/file");
data.addOutputFile("/output/file");
// create a store and add the data.
DependencyDataStore store = new DependencyDataStore();
store.addData(data);
// and store it to disk
File file = File.createTempFile("DependencyDataStoreTest", "");
file.deleteOnExit();
store.saveTo(file);
// now load it
store = new DependencyDataStore();
store.loadFrom(file);
Collection<DependencyData> newDataList = store.getData();
assertNotNull(newDataList);
assertEquals(1, newDataList.size());
DependencyData newData = newDataList.iterator().next();
assertNotNull(newData);
// compare the values
assertEquals(data.getMainFile(), newData.getMainFile());
assertEquals(data.getSecondaryFiles(), newData.getSecondaryFiles());
assertEquals(data.getOutputFiles(), newData.getOutputFiles());
}
public void testStoreSingleDataWithMultiFiles() throws IOException {
// create a DependencyData object.
DependencyData data = new DependencyData();
data.setMainFile("/main/file");
data.addSecondaryFile("/secondary/file");
data.addSecondaryFile("/secondary/file2");
data.addOutputFile("/output/file");
data.addOutputFile("/output/file2");
// create a store and add the data.
DependencyDataStore store = new DependencyDataStore();
store.addData(data);
// and store it to disk
File file = File.createTempFile("DependencyDataStoreTest", "");
file.deleteOnExit();
store.saveTo(file);
// now load it
store = new DependencyDataStore();
store.loadFrom(file);
Collection<DependencyData> newDataList = store.getData();
assertNotNull(newDataList);
assertEquals(1, newDataList.size());
DependencyData newData = newDataList.iterator().next();
assertNotNull(newData);
// compare the values
assertEquals(data.getMainFile(), newData.getMainFile());
assertEquals(data.getSecondaryFiles(), newData.getSecondaryFiles());
assertEquals(data.getOutputFiles(), newData.getOutputFiles());
}
public void testStoreMultiData() throws IOException {
// create a DependencyData object.
DependencyData data = new DependencyData();
data.setMainFile("/1/main/file");
data.addSecondaryFile("/1/secondary/file");
data.addOutputFile("/1/output/file");
DependencyData data2 = new DependencyData();
data2.setMainFile("/2/main/file");
data2.addSecondaryFile("/2/secondary/file");
data2.addOutputFile("/2/output/file");
// create a store and add the data.
DependencyDataStore store = new DependencyDataStore();
store.addData(data);
store.addData(data2);
// and store it to disk
File file = File.createTempFile("DependencyDataStoreTest", "");
file.deleteOnExit();
store.saveTo(file);
// now load it
store = new DependencyDataStore();
store.loadFrom(file);
// get the collection to check on the size.
Collection<DependencyData> newDataList = store.getData();
assertEquals(2, newDataList.size());
DependencyData firstData = store.getByMainFile("/1/main/file");
assertNotNull(firstData);
// compare the values
assertEquals(data.getMainFile(), firstData.getMainFile());
assertEquals(data.getSecondaryFiles(), firstData.getSecondaryFiles());
assertEquals(data.getOutputFiles(), firstData.getOutputFiles());
DependencyData secondData = store.getByMainFile("/2/main/file");
assertNotNull(secondData);
// compare the values
assertEquals(data2.getMainFile(), secondData.getMainFile());
assertEquals(data2.getSecondaryFiles(), secondData.getSecondaryFiles());
assertEquals(data2.getOutputFiles(), secondData.getOutputFiles());
}
public void testStoreNoOutputData() throws IOException {
// create a DependencyData object.
DependencyData data = new DependencyData();
data.setMainFile("/1/main/file");
data.addSecondaryFile("/1/secondary/file");
DependencyData data2 = new DependencyData();
data2.setMainFile("/2/main/file");
data2.addSecondaryFile("/2/secondary/file");
data2.addOutputFile("/2/output/file");
// create a store and add the data.
DependencyDataStore store = new DependencyDataStore();
store.addData(data);
store.addData(data2);
// and store it to disk
File file = File.createTempFile("DependencyDataStoreTest", "");
file.deleteOnExit();
store.saveTo(file);
// now load it
store = new DependencyDataStore();
store.loadFrom(file);
// get the collection to check on the size.
Collection<DependencyData> newDataList = store.getData();
assertEquals(2, newDataList.size());
DependencyData firstData = store.getByMainFile("/1/main/file");
assertNotNull(firstData);
// compare the values
assertEquals(data.getMainFile(), firstData.getMainFile());
assertEquals(data.getSecondaryFiles(), firstData.getSecondaryFiles());
assertEquals(0, firstData.getOutputFiles().size());
DependencyData secondData = store.getByMainFile("/2/main/file");
assertNotNull(secondData);
// compare the values
assertEquals(data2.getMainFile(), secondData.getMainFile());
assertEquals(data2.getSecondaryFiles(), secondData.getSecondaryFiles());
assertEquals(data2.getOutputFiles(), secondData.getOutputFiles());
}
public void testStoreHeaderData() throws IOException {
// create a DependencyData object.
DependencyData data = new DependencyData();
data.setMainFile("/1/main/file");
DependencyData data2 = new DependencyData();
data2.setMainFile("/2/main/file");
// create a store and add the data.
DependencyDataStore store = new DependencyDataStore();
store.addData(data);
store.addData(data2);
// and store it to disk
File file = File.createTempFile("DependencyDataStoreTest", "");
file.deleteOnExit();
store.saveTo(file);
// now load it
store = new DependencyDataStore();
store.loadFrom(file);
// get the collection to check on the size.
Collection<DependencyData> newDataList = store.getData();
assertEquals(2, newDataList.size());
DependencyData firstData = store.getByMainFile("/1/main/file");
assertNotNull(firstData);
// compare the values
assertEquals(data.getMainFile(), firstData.getMainFile());
assertEquals(0, firstData.getSecondaryFiles().size());
assertEquals(0, firstData.getOutputFiles().size());
DependencyData secondData = store.getByMainFile("/2/main/file");
assertNotNull(secondData);
// compare the values
assertEquals(data2.getMainFile(), secondData.getMainFile());
assertEquals(0, secondData.getSecondaryFiles().size());
assertEquals(0, secondData.getOutputFiles().size());
}
}