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