* Bug #12774 fixed - Fix various typos.
[scilab.git] / scilab / modules / dynamic_link / tests / unit_tests / links.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 // Copyright (C) 2009 - DIGITEO
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8
9 // <-- ENGLISH IMPOSED -->
10 // <-- CLI SHELL MODE -->
11
12 ilib_verbose(0);
13
14 curPath = pwd(); 
15 pref='ext';
16 suf='f';
17 routines=[pref(ones(1,12))+string(1:12)+suf(ones(1,12))];
18 copyfile(SCI+filesep()+'modules'+filesep()+'dynamic_link'+filesep()+'tests'+filesep()+'unit_tests'+filesep()+'externals.f', TMPDIR);
19 chdir(TMPDIR);
20 ilib_for_link(routines,'externals.f',[],"f");
21
22 // load the shared library 
23 exec loader.sce ;
24
25 //===========================================================
26 //(very) simple example 1
27 //===========================================================
28 a=[1,2,3];b=[4,5,6];n=3;
29 c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
30 if norm(c-(a+b)) > %eps then pause,end
31
32 //===========================================================
33 //Simple example #2
34 //===========================================================
35 a=[1,2,3];b=[4,5,6];n=3;
36 c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
37 if norm(c-(sin(a)+cos(b))) > %eps then pause,end
38
39 //===========================================================
40 //Example #3
41 //===========================================================
42 a=[1,2,3];b=[4,5,6];n=3;
43 c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
44 if norm(c-(sin(a)+cos(b)))> %eps then pause,end
45 c=call('ext3f','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
46 if norm(c-(a+b)) > %eps then pause,end
47
48 //===========================================================
49 //Example #4 
50 //===========================================================
51 a=[1,2,3];b=[4,5,6];n=3;yes='yes';
52 c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
53 if norm(c-(sin(a)+cos(b))) > %eps then pause,end
54 yes='no';
55 c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
56 if norm(c-(a+b)) > %eps then pause,end
57 //clear yes  --> undefined variable : yes
58
59 //===========================================================
60 //Example #5 
61 //===========================================================
62 // reading vector a in scilab internal stack
63 a=[1,2,3];b=[2,3,4];
64 c=call('ext5f',b,1,'d','out',[1,3],2,'d');
65 if norm(c-(a+2*b)) > %eps then pause,end
66
67 //===========================================================
68 //Example #6
69 //===========================================================
70 //reading  vector with name='a' in scilab internal stack
71 a=[1,2,3];b=[2,3,4];
72 c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d');
73 if norm(c-(a+2*b)) > %eps then pause,end
74
75 //===========================================================
76 //Example #7
77 //===========================================================
78 //creating vector c in scilab internal stack
79 clear c;
80 a=[1,2,3]; b=[2,3,4];
81 //c does not exist (c made by ext7f)
82 c1=call('ext7f',a,1,'d',b,2,'d','out',2);
83 if norm(c1-b) > %eps then pause,end
84 //c now exists
85 if norm(c-(a+2*b)) > %eps then pause,end
86 //d exists 
87 if d<>"test" then pause,end
88
89 //===========================================================
90 //Example #8
91 //===========================================================
92 //call ext8f argument function with dynamic link
93 yref=ode([1;0;0],0,[0.4,4],'ext8f');
94
95 //===========================================================
96 //Example #9
97 //===========================================================
98 //passing a parameter to ext9f routine by a list:
99 param=[0.04,10000,3d+7];    
100 y=ode([1;0;0],0,[0.4,4],list('ext9f',param));
101 if norm(y-yref) > 10000*%eps then pause,end
102
103 //===========================================================
104 //Example #10
105 //===========================================================
106 //Passing a parameter to argument function of ode
107 param=[0.04,10000,3d+7];
108 y=ode([1;0;0],0,[0.4,4],'ext10f');
109 //param must be defined as a scilab variable upon calling ode
110 if norm(y-yref) > 10000*%eps then pause,end
111
112 //===========================================================
113 //Example #11
114 //===========================================================
115 //sharing common data
116 a=1:10;
117 n=10;a=1:10;
118 call('ext11f',n,1,'i',a,2,'r','out',2);  //loads b with a
119 c=call('ext12f',n,1,'i','out',[1,10],2,'r');  //loads c with b
120 if norm(c-a) > %eps then pause,end
121
122 //===========================================================
123 chdir(curPath);