1c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll/* 2c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Copyright (C) 2011 The Android Open Source Project 3c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * 4c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Licensed under the Apache License, Version 2.0 (the "License"); 5c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * you may not use this file except in compliance with the License. 6c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * You may obtain a copy of the License at 7c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * 8c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * http://www.apache.org/licenses/LICENSE-2.0 9c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * 10c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Unless required by applicable law or agreed to in writing, software 11c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * distributed under the License is distributed on an "AS IS" BASIS, 12c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * See the License for the specific language governing permissions and 14c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * limitations under the License. 15c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll */ 16c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 17c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Mollpackage com.android.sdkuilib.internal.repository; 18c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 19908753734919c32cc5d4b538fea68f45c1eaf31fRaphael Mollimport com.android.sdklib.internal.repository.archives.Archive; 20908753734919c32cc5d4b538fea68f45c1eaf31fRaphael Mollimport com.android.sdklib.internal.repository.packages.MockEmptyPackage; 21c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 22c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Mollimport java.util.ArrayList; 23c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Mollimport java.util.Arrays; 24c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 25c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Mollimport junit.framework.TestCase; 26c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 27c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Mollpublic class UpdaterDataTest extends TestCase { 28c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 29c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll private MockUpdaterData m; 30c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 31c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll @Override 32c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll protected void setUp() throws Exception { 33c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll super.setUp(); 34c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll m = new MockUpdaterData(); 35c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll assertEquals("[]", Arrays.toString(m.getInstalled())); 36c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll } 37c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 38c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll @Override 39c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll protected void tearDown() throws Exception { 40c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll super.tearDown(); 41c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll } 42c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 43c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll /** 44c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Tests the case where we have nothing to install. 45c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll */ 46c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll public void testInstallArchives_None() { 47c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll m._installArchives(new ArrayList<ArchiveInfo>()); 48c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll assertEquals("[]", Arrays.toString(m.getInstalled())); 49c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll } 50c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 51c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 52c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll /** 53c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Tests the case where there's a simple dependency, in the right order 54c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * (e.g. install A1 then A2 that depends on A1). 55c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll */ 56c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll public void testInstallArchives_SimpleDependency() { 57c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 58c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArrayList<ArchiveInfo> archives = new ArrayList<ArchiveInfo>(); 59c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 60c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll Archive a1 = new MockEmptyPackage("a1").getLocalArchive(); 61c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArchiveInfo ai1 = new ArchiveInfo(a1, null, null); 62c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 63c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll Archive a2 = new MockEmptyPackage("a2").getLocalArchive(); 64c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArchiveInfo ai2 = new ArchiveInfo(a2, null, new ArchiveInfo[] { ai1 } ); 65c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 66c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll archives.add(ai1); 67c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll archives.add(ai2); 68c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 69c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll m._installArchives(archives); 70ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll assertEquals( 71ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll "[MockEmptyPackage 'a1', MockEmptyPackage 'a2']", 72ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll Arrays.toString(m.getInstalled())); 73c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll } 74c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 75c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll /** 76c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * Tests the case where there's a simple dependency, in the wrong order 77c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll * (e.g. install A2 then A1 which A2 depends on) 78c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll */ 79c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll public void testInstallArchives_ReverseDependency() { 80c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 81c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArrayList<ArchiveInfo> archives = new ArrayList<ArchiveInfo>(); 82c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 83c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll Archive a1 = new MockEmptyPackage("a1").getLocalArchive(); 84c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArchiveInfo ai1 = new ArchiveInfo(a1, null, null); 85c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 86c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll Archive a2 = new MockEmptyPackage("a2").getLocalArchive(); 87c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll ArchiveInfo ai2 = new ArchiveInfo(a2, null, new ArchiveInfo[] { ai1 } ); 88c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 89c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll archives.add(ai2); 90c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll archives.add(ai1); 91c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 92c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll m._installArchives(archives); 93ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll assertEquals( 94ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll "[MockEmptyPackage 'a1', MockEmptyPackage 'a2']", 95ab96c65a93b002198c9192219c5e83a97820cc47Raphael Moll Arrays.toString(m.getInstalled())); 96c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll } 97c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll 98c3c59ef4edf2f49071bf1a9e5de4e99dcc07e582Raphael Moll} 99