What is FRUIT?

FRUIT is FORTRAN Unit Test Framework, written in FORTRAN 95.

FRUIT has assertion, fixture, setup, teardown, report, spec, driver generation and uses Rake (Ruby build utility) as build tool.

FRUIT core is written in FORTRAN , so one can use it without need of installing any additional software.

Requirements

FRUIT (FORTRAN only)

FRUIT (FORTRAN + Ruby)

FRUIT Fortran only vs FRUIT Fortran + Ruby

FRUIT Fortran only

  • Good for small project
  • Good if you do not need setup and teardown subroutines (otherwise you need to create and maintain additional basket file)
  • You will need to reate test driver on your own

FRUIT Fortran + Ruby

  • Good for complex projects
  • Good if you need setup and teardown subroutines
  • Needs Ruby interpreter
  • You will need only to point test and source files in CMakeLists files

Types of subroutines

  • assert - a state of belief. If assert fails your test will also fail (eg. assert_equals(1,2) will fail because 1!=2). Assert is core root of all unit tests.
  • setup - subroutine called before every test subroutine. It can be used to initialize variables.
  • teardown - subroutine called after every test subroutine. It can be used to clean after test.

Avaivable subroutunes

subroutines:
	assert_equals
	assert_not_equals
	assert_true
	assert_false
	setup
	teardown

!examples with different types:

!integers and reals
	assert_equals(a,b)
	assert_equals(a,b,"Message when assert fails")
	assert_not_equals(a,b)
	assert_not_equals(a,b,"Message when assert fails") 

!NOTE: "Message when assert fails" is optional

!reals with tolerance 
	assert_equals(a,b,tolerance)

!booleans and expressions
	assert_true(expression)
	assert_false(expression)

!strings
	assert_equals("abc","abc")
	assert_not_equals("abc","abc")




The scientific work is published for the realization of the international project co-financed by Polish Ministry of Science and Higher Education in 2019 from financial resources of the program entitled "PMW"; Agreement No. 5040/H2020/Euratom/2019/2

This work has been carried out within the framework of the EUROfusion Consortium and has received funding from the Euratom research and training programme 2014–2020 under grant agreement No 633053. The views and opinions expressed herein do not necessarily reflect those of the European Commission or ITER

  • No labels