blob: e2001fc7176a26421ccbb9a06d7ef38ac9e82f62 [file] [log] [blame]
/*
* Copyright (C) 2015 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.compatibility.common.util;
import junit.framework.TestCase;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Unit tests for {@link DynamicConfigHandler}
*/
public class DynamicConfigHandlerTest extends TestCase {
private static final String localConfig =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<DynamicConfig>\n" +
" <Config key=\"test-config-1\">test config 1</Config>\n" +
" <Config key=\"test-config-2\">test config 2</Config>\n" +
" <Config key=\"override-config-2\">test config 3</Config>\n" +
" <ConfigList key=\"config-list\">\n" +
" <Item>config0</Item>\n" +
" <Item>config1</Item>\n" +
" <Item>config2</Item>\n" +
" <Item>config3</Item>\n" +
" <Item>config4</Item>\n" +
" </ConfigList>\n" +
" <ConfigList key=\"override-config-list-2\">\n" +
" <Item>A</Item>\n" +
" <Item>B</Item>\n" +
" <Item>C</Item>\n" +
" <Item>D</Item>\n" +
" <Item>E</Item>\n" +
" </ConfigList>\n" +
"</DynamicConfig>\n";
private static final String overrideJson =
"{\n" +
" \"config\": [\n" +
" {\n" +
" \"key\": \"version\",\n" +
" \"value\": \"1.0\"\n" +
" },\n" +
" {\n" +
" \"key\": \"suite\",\n" +
" \"value\": \"CTS_V2\"\n" +
" },\n" +
" {\n" +
" \"key\": \"override-config-1\",\n" +
" \"value\": \"override-config-val-1\"\n" +
" },\n" +
" {\n" +
" \"key\": \"override-config-2\",\n" +
" \"value\": \"override-config-val-2\"\n" +
" }\n" +
" ],\n" +
" \"configList\": [\n" +
" {\n" +
" \"key\": \"override-config-list-1\",\n" +
" \"value\": [\n" +
" \"override-config-list-val-1-1\",\n" +
" \"override-config-list-val-1-2\"\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"key\": \"override-config-list-2\",\n" +
" \"value\": [\n" +
" \"override-config-list-val-2-1\"\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"key\": \"override-config-list-3\",\n" +
" \"value\": []\n" +
" }\n" +
" ]\n" +
"}";
public void testDynamicConfigHandler() throws Exception {
String module = "test1";
File localConfigFile = createFileFromStr(localConfig, module);
File mergedFile = DynamicConfigHandler
.getMergedDynamicConfigFile(localConfigFile, overrideJson, module);
DynamicConfig.Params params = DynamicConfig.genParamsFromFile(mergedFile);
assertEquals("override-config-val-1", params.mDynamicParams.get("override-config-1"));
assertTrue(params.mDynamicArrayParams.get("override-config-list-1")
.contains("override-config-list-val-1-1"));
assertTrue(params.mDynamicArrayParams.get("override-config-list-1")
.contains("override-config-list-val-1-2"));
assertTrue(params.mDynamicArrayParams.get("override-config-list-3").size() == 0);
assertEquals("test config 1", params.mDynamicParams.get("test-config-1"));
assertTrue(params.mDynamicArrayParams.get("config-list").contains("config2"));
assertEquals("override-config-val-2", params.mDynamicParams.get("override-config-2"));
assertEquals(1, params.mDynamicArrayParams.get("override-config-list-2").size());
assertTrue(params.mDynamicArrayParams.get("override-config-list-2")
.contains("override-config-list-val-2-1"));
}
private File createFileFromStr(String configStr, String module) throws IOException {
File file = File.createTempFile(module, "dynamic");
FileOutputStream stream = null;
try {
stream = new FileOutputStream(file);
stream.write(configStr.getBytes());
stream.flush();
} finally {
if (stream != null) {
stream.close();
}
}
return file;
}
}