1*** Keywords ***
2Create Machine
3    ${TEST_DIR}=                    Evaluate  r"${CURDIR}".replace(" ", "\\ ")
4
5    Execute Command                 mach create
6    Execute Command                 i @${TEST_DIR}/PeripheralWithAliases.cs
7    Create Log Tester               0
8
9Create Test Peripheral
10    [Arguments]                     ${parameters}=${EMPTY}
11    Execute Command                 machine LoadPlatformDescriptionFromString "test: Mocks.PeripheralWithAliases @ sysbus {${parameters}}"
12
13*** Test Cases ***
14Should Create Peripheral Without Using Aliases
15    Create Machine
16    Create Test Peripheral          normalParameter: 5; mode: PeripheralModes.Mode1; aliasedParameter: 10
17    Wait For Log Entry              normalParameter = 5
18    Wait For Log Entry              mode = Mode1
19    Wait For Log Entry              aliasedParameter = 10
20    Wait For Log Entry              aliasedParameterDefault = 0
21
22Should Create Peripheral Using Aliases
23    Create Machine
24    Create Test Peripheral          normalParameter: -12; mode: Modes.Mode2; ctorAlias: 100; ctorAliasDefault: 15
25    Wait For Log Entry              normalParameter = -12
26    Wait For Log Entry              mode = Mode2
27    Wait For Log Entry              aliasedParameter = 100
28    Wait For Log Entry              aliasedParameterDefault = 15
29
30Should Throw Recoverable Exception When Using Alias And Argument Name At The Same Time
31    Create Machine
32    Run Keyword And Expect Error    *Ambiguous choice between aliased and normal argument name*
33    ...                             Create Test Peripheral  normalParameter: -12; mode: Modes.Mode2; ctorAlias: 100; aliasedParameter: 100
34
35Should Warn When Using Aliases
36    Create Machine
37    Create Test Peripheral          normalParameter: 5; mode: Modes.Mode1; ctorAlias: 10; ctorAliasDefault: 15
38    Wait For Log Entry              Using alias 'Modes' for type 'PeripheralModes'
39    Wait For Log Entry              Using alias 'ctorAlias' for parameter 'aliasedParameter'
40    Should Not Be In Log            Using alias 'ctorAliasDefault' for parameter 'aliasedParameterDefault'
41
42Should Not Accept Invalid Aliases
43    Create Machine
44    Run Keyword And Expect Error    *Could not find corresponding attribute for parameter 'aliasedParameter'*
45    ...                             Create Test Peripheral  normalParameter: 5; mode: Modes.Mode1; invalidParameter: 10
46