aboutsummaryrefslogtreecommitdiff
path: root/example_packages/hello_complex
diff options
context:
space:
mode:
authorBrad Richardson <everythingfunctional@protonmail.com>2020-10-14 09:24:55 -0500
committerBrad Richardson <everythingfunctional@protonmail.com>2020-10-14 09:24:55 -0500
commitb5b16cf826d468e79b4087500192a4a9e07c140f (patch)
tree1f615ee9ed6500bb1f6964ef2af0478b2fe51e4e /example_packages/hello_complex
parentd3a65e36b28808c2c51ae41fc107f1179e27a08c (diff)
downloadfpm-b5b16cf826d468e79b4087500192a4a9e07c140f.tar.gz
fpm-b5b16cf826d468e79b4087500192a4a9e07c140f.zip
Better organize example packages and bootstrap tests
Diffstat (limited to 'example_packages/hello_complex')
-rw-r--r--example_packages/hello_complex/.gitignore1
-rw-r--r--example_packages/hello_complex/apps/say_goodbye/say_goodbye.f907
-rw-r--r--example_packages/hello_complex/apps/say_hello/say_Hello.f907
-rw-r--r--example_packages/hello_complex/fpm.toml24
-rw-r--r--example_packages/hello_complex/source/farewell_m.f9014
-rw-r--r--example_packages/hello_complex/source/greet_m.f9014
-rw-r--r--example_packages/hello_complex/source/subdir/constants.f907
-rw-r--r--example_packages/hello_complex/tests/farewell/farewell_test.f9018
-rw-r--r--example_packages/hello_complex/tests/greet/greet_test.f9018
9 files changed, 110 insertions, 0 deletions
diff --git a/example_packages/hello_complex/.gitignore b/example_packages/hello_complex/.gitignore
new file mode 100644
index 0000000..a007fea
--- /dev/null
+++ b/example_packages/hello_complex/.gitignore
@@ -0,0 +1 @@
+build/*
diff --git a/example_packages/hello_complex/apps/say_goodbye/say_goodbye.f90 b/example_packages/hello_complex/apps/say_goodbye/say_goodbye.f90
new file mode 100644
index 0000000..6966e79
--- /dev/null
+++ b/example_packages/hello_complex/apps/say_goodbye/say_goodbye.f90
@@ -0,0 +1,7 @@
+program say_goodbye
+ use farewell_m, only: make_farewell
+
+ implicit none
+
+ print *, make_farewell("World")
+end program say_goodbye
diff --git a/example_packages/hello_complex/apps/say_hello/say_Hello.f90 b/example_packages/hello_complex/apps/say_hello/say_Hello.f90
new file mode 100644
index 0000000..cf4a742
--- /dev/null
+++ b/example_packages/hello_complex/apps/say_hello/say_Hello.f90
@@ -0,0 +1,7 @@
+program say_Hello
+ use greet_m, only: make_greeting
+
+ implicit none
+
+ print *, make_greeting("World")
+end program say_Hello
diff --git a/example_packages/hello_complex/fpm.toml b/example_packages/hello_complex/fpm.toml
new file mode 100644
index 0000000..30ed293
--- /dev/null
+++ b/example_packages/hello_complex/fpm.toml
@@ -0,0 +1,24 @@
+name = "hello_complex"
+
+[library]
+source-dir="source"
+
+[[executable]]
+name="say_Hello"
+source-dir="apps/say_hello"
+main="say_Hello.f90"
+
+[[executable]]
+name="say_goodbye"
+source-dir="apps/say_goodbye"
+main="say_goodbye.f90"
+
+[[test]]
+name="greet_test"
+source-dir="tests/greet"
+main="greet_test.f90"
+
+[[test]]
+name="farewell_test"
+source-dir="tests/farewell"
+main="farewell_test.f90"
diff --git a/example_packages/hello_complex/source/farewell_m.f90 b/example_packages/hello_complex/source/farewell_m.f90
new file mode 100644
index 0000000..fbc45ed
--- /dev/null
+++ b/example_packages/hello_complex/source/farewell_m.f90
@@ -0,0 +1,14 @@
+module farewell_m
+ use subdir_constants, only: FAREWELL_STR
+ implicit none
+ private
+
+ public :: make_farewell
+contains
+ function make_farewell(name) result(greeting)
+ character(len=*), intent(in) :: name
+ character(len=:), allocatable :: greeting
+
+ greeting = FAREWELL_STR // name // "!"
+ end function make_farewell
+end module farewell_m
diff --git a/example_packages/hello_complex/source/greet_m.f90 b/example_packages/hello_complex/source/greet_m.f90
new file mode 100644
index 0000000..38afd08
--- /dev/null
+++ b/example_packages/hello_complex/source/greet_m.f90
@@ -0,0 +1,14 @@
+module greet_m
+ use subdir_constants, only: GREET_STR
+ implicit none
+ private
+
+ public :: make_greeting
+contains
+ function make_greeting(name) result(greeting)
+ character(len=*), intent(in) :: name
+ character(len=:), allocatable :: greeting
+
+ greeting = GREET_STR // name // "!"
+ end function make_greeting
+end module greet_m
diff --git a/example_packages/hello_complex/source/subdir/constants.f90 b/example_packages/hello_complex/source/subdir/constants.f90
new file mode 100644
index 0000000..59d6e5f
--- /dev/null
+++ b/example_packages/hello_complex/source/subdir/constants.f90
@@ -0,0 +1,7 @@
+module subdir_constants
+implicit none
+
+character(*), parameter :: GREET_STR = 'Hello, '
+character(*), parameter :: FAREWELL_STR = 'Goodbye, '
+
+end module subdir_constants
diff --git a/example_packages/hello_complex/tests/farewell/farewell_test.f90 b/example_packages/hello_complex/tests/farewell/farewell_test.f90
new file mode 100644
index 0000000..0f21b18
--- /dev/null
+++ b/example_packages/hello_complex/tests/farewell/farewell_test.f90
@@ -0,0 +1,18 @@
+program farewell_test
+ use farewell_m, only: make_farewell
+ use iso_fortran_env, only: error_unit, output_unit
+
+ implicit none
+
+ character(len=:), allocatable :: farewell
+
+ allocate(character(len=0) :: farewell)
+ farewell = make_farewell("World")
+
+ if (farewell == "Goodbye, World!") then
+ write(output_unit, *) "Passed"
+ else
+ write(error_unit, *) "Failed"
+ call exit(1)
+ end if
+end program farewell_test
diff --git a/example_packages/hello_complex/tests/greet/greet_test.f90 b/example_packages/hello_complex/tests/greet/greet_test.f90
new file mode 100644
index 0000000..41fa508
--- /dev/null
+++ b/example_packages/hello_complex/tests/greet/greet_test.f90
@@ -0,0 +1,18 @@
+program greet_test
+ use greet_m, only: make_greeting
+ use iso_fortran_env, only: error_unit, output_unit
+
+ implicit none
+
+ character(len=:), allocatable :: greeting
+
+ allocate(character(len=0) :: greeting)
+ greeting = make_greeting("World")
+
+ if (greeting == "Hello, World!") then
+ write(output_unit, *) "Passed"
+ else
+ write(error_unit, *) "Failed"
+ call exit(1)
+ end if
+end program greet_test