//*******************************************************************************
//*
//*   Copyright (C) 2002-2003, International Business Machines
//*   Corporation and others.  All Rights Reserved.
//*
//*******************************************************************************


// This is a test resource to check whether the aliasing mechanism works
// as advertised

testaliases
{
    // This should produce an error - circular alias
    aaa:alias { "testaliases/aab" } // Test circular dependency protection
    aab:alias { "testaliases/aaa" }

    // aliasing nonexist position
    nonexisting:alias { "/ICUDATA/uk" }

    // aliasing to another resource
    simplealias:alias { "testtypes/menu/file/open" } // simple referencing

    // alias that uses another alias and references parts of the end structure
    referencingalias:alias { "testaliases/anotheralias/Sequence" } // Referencing through another alias
    anotheralias:alias { "/ICUDATA/uk/CollationElements" }

    // aliasing using position
    CollationElements:alias { "/ICUDATA/uk" } // Referencing corresponding resource in another bundle

    // aliasing arrays
    zoneTests {
        zoneAlias:alias { "/ICUDATA/en/zoneStrings" } // Referencing by index
        zoneAlias1:alias { "/ICUDATA/en/zoneStrings/3" } // Referencing by index
        zoneAlias2:alias { "/ICUDATA/en/zoneStrings/3/0" } // Referencing by index
    }

    // Test aliasing parts of an array using position
    zoneStrings { 
        :alias { "/ICUDATA/en" } 
        :alias { "/ICUDATA/en" } 
    }
    // WARNING: this test assumes that on all platforms digits sort normally
    // if not, the test may fail
    testGetStringByKeyAliasing {
        KeyAlias0PST:alias { "/ICUDATA/en/zoneStrings/0/0" } //"PST",
        KeyAlias1PacificStandardTime:alias { "/ICUDATA/en/zoneStrings/0/1" } //"Pacific Standard Time",
        KeyAlias2PDT:alias { "/ICUDATA/en/zoneStrings/0/4" } //"PDT",
        KeyAlias3LosAngeles:alias { "/ICUDATA/en/zoneStrings/0/5" } //"Los Angeles",
    }
    testGetStringByIndexAliasing  {
        :alias { "/ICUDATA/en/zoneStrings/0/0" } //"PST",
        :alias { "/ICUDATA/en/zoneStrings/0/1" } //"Pacific Standard Time",
        :alias { "/ICUDATA/en/zoneStrings/0/4" } //"PDT",
        :alias { "/ICUDATA/en/zoneStrings/0/5" } //"Los Angeles",
    }

}

//eof


