SEP 39 DONE
[scilab.git] / scilab / modules / dynamic_link / tests / unit_tests / ilib_build_f90.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2009 - DIGITEO - Sylvestre LEDRU
4 // Copyright (C) 2009 - DIGITEO - Michael BAUDIN
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8
9 // <-- ENGLISH IMPOSED -->
10 // <-- JVM NOT MANDATORY -->
11
12 // Here with give a complete example on adding new primitive to Scilab
13 // Note that is a unitary test but it could have been a non reg test of bug
14 // 3488 but it is not because there was no fix to make it work.
15 //creating the interface file
16
17 // Checks on windows that we have a Fortran 90 compiler (Intel)
18
19 if haveacompiler() then
20   if ( (getos() == 'Windows' & findmsifortcompiler() <> 'unknown') | (getos() <> 'Windows') ) then
21     ilib_verbose(0);
22     sourcecode=['subroutine incrdoublef90(x,y)'
23                 '  implicit none'
24                 '  double precision, intent(in) :: x'
25                 '  double precision, intent(out) :: y'
26                 '  y=x+1'
27                 'end subroutine incrdoublef90'];
28     cd(TMPDIR);
29     mputl(sourcecode,'incrdoublef90.f90');
30     libpath=ilib_for_link('incrdoublef90','incrdoublef90.f90',[],'f');
31     exec('loader.sce');
32     n = 1.;
33     m = call("incrdoublef90",n,1,"d","out",[1,1],2,"d");
34     if abs(m-2.)>%eps then pause,end
35     n = 2.;
36     m = call("incrdoublef90",n,1,"d","out",[1,1],2,"d");
37     if abs(m-3.)>%eps then pause,end
38   end
39 end