AUnit examples ↩
![]() |
Directory aunit-examples\ contains Ada code examples from the GitHub project AdaCore/aunit . |
We made the following changes to the original AdaCore/aunit
code examples:
- We introduce a parent project file
Makefile.inc
which gathers all tool definitions and takes care of different settings for 3 environments: MSYS2, Windows and Unix. - We require the two environment variables
GNAT_HOME
andMSYS_HOME
to be defined when working in the MSYS2 and Windows environments (behavior is unchanged under Unix).
This example has the following directory structure :
> tree /a /f . | findstr /v /b [A-Z] | harness.gpr | Makefile +---tested_lib | | testlib.gpr | +---lib | \---src | math.adb | math.ads \---tests math-test.adb math-test.ads math_suite.adb math_suite.ads test_math.adb
We build this code example using the make.exe
build tool (project file Makefile
depends on parent file Makefile.inc
).
> where make C:\opt\msys64\usr\bin\make.exe > make "C:/opt/GNAT/2021/bin/gprbuild.exe" -p -f -Pharness Setup [mkdir] object directory for project Harness Compile [Ada] test_calculator.adb [...] [Ada] operations-subtraction_test_fixture.adb Build Libraries [gprlib] testlib.lexch [archive] libtestlib.a [index] libtestlib.a Bind [gprbind] test_calculator.bexch [Ada] test_calculator.ali Link [link] test_calculator.adb > test_calculator.exe OK Test Stack.Push OK Test Stack.Pop OK Test Stack.Length OK Test Stack.Top [...] Total Tests Run: 14 Successful Tests: 12 Failed Assertions: 2 Unexpected Errors: 0
failures
Example▴
Project failures
consists of 3 sets of files:
- the 3 build files
harness.gpr
,Makefile
andMakefile.inc
(parent file). - the 2 library source files
math.adb
andmath.ads
. - the 5 test source files
math-test.adb
,math-test.ads
,math_suite.adb
,math_suite.ads
,test_math.adb
.
> make "C:/opt/GNAT/2021/bin/gprbuild.exe" -p -Pharness Setup [mkdir] object directory for project TestLib [mkdir] object directory for project Harness Compile [Ada] test_math.adb [Ada] math.adb [Ada] math_suite.adb [Ada] math-test.adb Build Libraries [gprlib] testlib.lexch [archive] libtestlib.a [index] libtestlib.a Bind [gprbind] test_math.bexch [Ada] test_math.ali Link [link] test_math.adb > test_math.exe OK Test addition OK Test subtraction FAIL Test addition (failure expected) Test should fail this assertion, as 5+3 /= 9 at math-test.adb:29 ERROR Test addition (error expected) CONSTRAINT_ERROR Exception Message: math.adb:8 overflow check failed Traceback: [%USERPROFILE%\workspace-perso\ada-examples\aunit-examples\failures\test_math.exe] 0x7ff7f85626f2 Math."+" at math.adb:8 0x7ff7f8561e98 Math.Test.Test_Addition_Error at math-test.adb:37 0x7ff7f856210a Math_Suite.Caller.Run_Test at aunit-test_caller.adb:96 0x7ff7f85664a5 aunit__assertions__TtestCFD at ??? 0x7ff7f8566767 aunit__assertions__TtestCFD at ??? 0x7ff7f8569679 aunit__assertions__TtestCFD at ??? 0x7ff7f8566249 aunit__assertions__TtestCFD at ??? 0x7ff7f85615e3 Test_Math at aunit-run.adb:88 0x7ff7f8561d00 Main at b__test_math.adb:399 0x7ff7f85613af __tmainCRTStartup at crtexe.c:321 0x7ff7f85614e4 mainCRTStartup at crtexe.c:202 [C:\WINDOWS\System32\KERNEL32.DLL] 0x7ffc4c7d7032 [C:\WINDOWS\SYSTEM32\ntdll.dll] 0x7ffc4df4264f Total Tests Run: 4 Successful Tests: 2 Failed Assertions: 1 Unexpected Errors: 1
liskov
Example ▴
wip
> make "C:/opt/GNAT/2021/bin/gprbuild.exe" -p -Pharness Setup [mkdir] object directory for project TestLib [mkdir] object directory for project Harness Compile [Ada] test_liskov.adb [...] [Ada] square-tests-suite_liskov.adb [Ada] shape-tests.adb Build Libraries [gprlib] testlib.lexch [archive] libtestlib.a [index] libtestlib.a Bind [gprbind] test_liskov.bexch [Ada] test_liskov.ali Link [link] test_liskov.adb > test_liskov.exe OK Rectangle : Test width OK Rectangle : Test height OK Rectangle : Test area OK Square : Test width OK Square : Test height OK Square : Test area OK Square as Rectangle (liskov) : Test width OK Square as Rectangle (liskov) : Test height FAIL Square as Rectangle (liskov) : Test area Wrong area returned for object rectangle at rectangle-tests.adb:28 Total Tests Run: 9 Successful Tests: 8 Failed Assertions: 1 Unexpected Errors: 0