From a36000e202b806a29fb45b93b0ea64615ae2ca56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandro=20S=C3=A1nchez=20Bach?= Date: Mon, 3 Mar 2014 02:58:27 +0100 Subject: [PATCH] Test added: cpu/hello_world --- README.md | 2 +- tests/cpu/hello_world/hello_world.c | 7 +++++++ tests/cpu/hello_world/hello_world.expected | 1 + tests/cpu/hello_world/hello_world.ppu.self | Bin 0 -> 82504 bytes 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/cpu/hello_world/hello_world.c create mode 100644 tests/cpu/hello_world/hello_world.expected create mode 100644 tests/cpu/hello_world/hello_world.ppu.self diff --git a/README.md b/README.md index 869bee2..80c409b 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ PS3 Autotests A repository of PS3 programs performing several tests on the PS3 platform. Inspired by the [PSP Autotests](https://github.com/hrydgard/pspautotests) repository, and shares some goals with it and proposes some other ones: +* Provide a platform for benchmarking PS3 emulators and comparing their performance with a real PS3. * Allow people to see how to use some obscure-newly-discovered APIs and features. * Allow PS3 emulators to avoid some regressions while performing refactorings and to have a reference while implementing APIs. -* Provide a platform for benchmarking PS3 emulators and comparing their performance with a real PS3. The main idea behind this is having several files per test unit: diff --git a/tests/cpu/hello_world/hello_world.c b/tests/cpu/hello_world/hello_world.c new file mode 100644 index 0000000..5d91d03 --- /dev/null +++ b/tests/cpu/hello_world/hello_world.c @@ -0,0 +1,7 @@ +#include + +int main(void) +{ + printf("Hello World!\n"); + return 0; +} diff --git a/tests/cpu/hello_world/hello_world.expected b/tests/cpu/hello_world/hello_world.expected new file mode 100644 index 0000000..980a0d5 --- /dev/null +++ b/tests/cpu/hello_world/hello_world.expected @@ -0,0 +1 @@ +Hello World! diff --git a/tests/cpu/hello_world/hello_world.ppu.self b/tests/cpu/hello_world/hello_world.ppu.self new file mode 100644 index 0000000000000000000000000000000000000000..78aea2124d443da6947ff0426df63fd698261d19 GIT binary patch literal 82504 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