187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll/*
287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * Copyright (C) 2012 The Android Open Source Project
387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll *
487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * Licensed under the Apache License, Version 2.0 (the "License");
587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * you may not use this file except in compliance with the License.
687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * You may obtain a copy of the License at
787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll *
887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll *      http://www.apache.org/licenses/LICENSE-2.0
987107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll *
1087107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * Unless required by applicable law or agreed to in writing, software
1187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * distributed under the License is distributed on an "AS IS" BASIS,
1287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * See the License for the specific language governing permissions and
1487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll * limitations under the License.
1587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll */
1687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
1787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollpackage com.android.sdklib.internal.repository.packages;
1887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
19e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Mollimport com.android.sdklib.repository.PkgProps;
20e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll
2187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollimport java.util.ArrayList;
2287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollimport java.util.Arrays;
2387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollimport java.util.Collections;
24e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Mollimport java.util.Properties;
2587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
2687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollimport junit.framework.TestCase;
2787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
2887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Mollpublic class FullRevisionPackageTest extends TestCase {
2987107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
30e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll    /**
31e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll     * Helper that creates the {@link Properties} from a {@link FullRevision}
32e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll     * as expected by {@link FullRevisionPackage}.
33e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll     */
34e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll    public static Properties createProps(FullRevision revision) {
35e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll        Properties props = new Properties();
36e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll        if (revision != null) {
37d113f3dc4354ac56cc51cf698610807b5bad914cRaphael Moll            props.setProperty(PkgProps.PKG_REVISION, revision.toString());
38e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll        }
39e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll        return props;
40e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll    }
41e4b7f106500886bf4a6eb0303dbc1cfb73229954Raphael Moll
4287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll    public void testCompareTo() throws Exception {
4387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        // Test order of full revision packages.
4487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        //
4587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        // Note that Package.compareTo() is designed to return the desired
4687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        // ordering for a list display and as such a final/release package
4787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        // needs to be listed before its rc/preview package.
4887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        //
4987107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        // This differs from the order used by FullRevision.compareTo().
5087107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
5187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        ArrayList<Package> list = new ArrayList<Package>();
5287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
5387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 0, 0, 0), 8));
5487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 0, 0, 1), 8));
5587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 0, 1, 0), 8));
5687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 0, 1, 1), 8));
5787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 1, 0, 0), 8));
5887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(1, 1, 0, 1), 8));
5987107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(2, 1, 1, 0), 8));
6087107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        list.add(new MockToolPackage(null, new FullRevision(2, 1, 1, 1), 8));
6187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
6287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        Collections.sort(list);
6387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll
6487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll        assertEquals(
6587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                 "[Android SDK Tools, revision 1, " +
6687107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 1 rc1, " +
6787107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 1.0.1, " +
6887107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 1.0.1 rc1, " +
6987107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 1.1, " +
7087107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 1.1 rc1, " +
7187107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 2.1.1, " +
7287107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                  "Android SDK Tools, revision 2.1.1 rc1]",
7387107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll                Arrays.toString(list.toArray()));
7487107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll    }
7587107c5cb1fb5fdafdaa94460fb6797af60fcde9Raphael Moll}
76