| *** Variables *** |
| ${SIMPLE_PLATFORM}= SEPARATOR= |
| ... """ ${\n} |
| ... simple: SimplePeripheral @ sysbus 0x0 ${\n} |
| ... """ |
| |
| ${COMPLEX_PLATFORM}= SEPARATOR= |
| ... """ ${\n} |
| ... simple: ReferencingPeripheral @ sysbus 0x0 ${\n} |
| ... """ |
| |
| *** Keywords *** |
| Use Peripheral |
| ${r}= Execute Command sysbus ReadDoubleWord 0x4 |
| Should Be Equal As Numbers ${r} 0x0 |
| |
| ${r}= Execute Command sysbus ReadDoubleWord 0x8 |
| Should Be Equal As Numbers ${r} 0x0 |
| |
| Execute Command sysbus WriteDoubleWord 0x0 0x147 |
| |
| ${r}= Execute Command sysbus ReadDoubleWord 0x4 |
| Should Be Equal As Numbers ${r} 0x28e |
| |
| ${r}= Execute Command sysbus ReadDoubleWord 0x8 |
| Should Be Equal As Numbers ${r} 5 |
| |
| *** Test Cases *** |
| Should Compile Simple Peripheral |
| Execute Command include "${CURDIR}/SimplePeripheral.cs" |
| |
| Execute Command mach create |
| Execute Command machine LoadPlatformDescriptionFromString ${SIMPLE_PLATFORM} |
| |
| Use Peripheral |
| |
| # We load dynamically compiled assemblies right away after the compilation, |
| # so type dependencies can be resolved automatically between separate assemblies. |
| # In the past we had a call to 'EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.ReferencedType"'. |
| # 'EnsureTypeIsLoaded' is no longer necessary when files are referencing each other, |
| # but can still be called explicitly if needed (e.g. there is no reference to the type in any of the loaded libraries). |
| # To test both cases (with and without 'EnsureTypeIsLoaded') we would need to have a separate robot file |
| # and to run this test in a different process to make it isolated, because in .NET Framework |
| # there is no way to unload an individual assembly without unloading all of the application domains that contain it. |
| # See: https://github.com/dotnet/docs/blob/376d4347ab1d83256c81d2427051e6ff705bcd30/docs/standard/assembly/load-unload.md |
| # It isn't worth the effort, so legacy command was just removed. |
| Should Compile Multiple Files Referencing Each Other |
| Execute Command include "${CURDIR}/ReferencedType.cs" |
| Execute Command include "${CURDIR}/ReferencingPeripheral.cs" |
| |
| Execute Command mach create |
| Execute Command machine LoadPlatformDescriptionFromString ${COMPLEX_PLATFORM} |
| |
| Use Peripheral |
| |
| EnsureTypeIsLoaded Should Throw Type Not Found |
| ${TEST_TYPE} SetVariable Antmicro.NotExistingType |
| Run Keyword And Expect Error *Given type ${TEST_TYPE} was not found* Execute Command EnsureTypeIsLoaded "${TEST_TYPE}" |