* Bug 15898 fixed: edit() with user-defined | alias of macro
[scilab.git] / scilab / modules / scinotes / tests / unit_tests / edit.tst
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2018 - Samuel GOUGEON
3 //
4 // This file is hereby licensed under the terms of the GNU GPL v2.0,
5 // pursuant to article 5.3.4 of the CeCILL v.2.1.
6 // This file was originally licensed under the terms of the CeCILL v2.1,
7 // and continues to be available under such terms.
8 // For more information, see the COPYING file which you should have received
9 // along with this program.
10 // =============================================================================
11 //                          Unitary tests for edit()
12 // =============================================================================
13
14 // <-- INTERACTIVE TEST -->
15
16 // 1) edit a new untitled macro
17 //    -------------------------
18 edit  // Must open TMPDIR/untitled.sci with the following (uncommented) content:
19 // function [] = untitled()
20 // endfunction
21
22
23 // 2) edit a new macro with given name following functions naming rules
24 //    -----------------------------------------------------------------
25 clear abcdef
26 edit abcdef  // Must open TMPDIR/abcdef.sci with the following (uncommented) content:
27 // function [] = abcdef()
28 // endfunction
29
30
31 // 3) edit an existing file, while macroname does not follow macros naming rules (due to "/" and ".")
32 //    --------------------------------------------------------------------------
33 edit SCI/Version.incl  // Must open SCI/Version.incl
34
35
36 // 4) edit a new file, while macroname does not follow macros naming rules (due to ".")
37 //    ---------------------------------------------------------------------
38 edit trials.sce   // Must ask for confirmation and then open trials.sce in the working directory
39
40
41 // 5) edit a native macro directly
42 //    ----------------------------
43 clear factors
44 edit factors  // Must open SCI/modules/polynomials/macros/factors.sci
45
46
47 // 6) edit a native macro through an alias
48 //    ------------------------------------
49 sinus = sind
50 edit sinus  // Must display a warning and open SCI/modules/elementary_functions/macros/sind.sci
51 // --> edit sinus
52 // WARNING: edit: "sinus" is an alias of "sind" => editing sind()
53 // WARNING:       Please reset sinus=sind if sind() is recompiled.
54
55
56 // 7) edit a native macro overwritten by a user-defined macro
57 //    -------------------------------------------------------
58 function r = factors(a)
59     disp("Actually my factors()")
60 endfunction
61 edit factors  // Must still open SCI/modules/polynomials/macros/factors.sci
62
63
64 // 8) edit an existing user-defined function with no alias in libraries
65 //    -----------------------------------------------------------------
66 function r = my_test(w)
67   // heading comments
68   r = w+2
69 endfunction
70 edit my_test    // Must open TMPDIR/my_test.sci
71
72
73 // 9) try to edit a primitive
74 //    -----------------------
75 clear sin
76 edit sin     // Must display the following error:
77 // --> edit sin
78 // at line    78 of function edit ( SCI\modules\core\macros\edit.sci line 92 )
79 // edit: sin() is an uneditable hard coded function.
80
81
82 // 10) edit a native macro through an alias named after a primitive
83 //     ------------------------------------------------------------
84 sin = sind
85 edit sin  // Must display a warning and open SCI/modules/elementary_functions/macros/sind.sci
86 // --> edit sin
87 // WARNING: edit: "sin" is an alias of "sind" => editing sind()
88 // WARNING:       Please reset sin=sind if sind() is recompiled.
89
90
91 // 11) edit a macro in a custom library, named as an existing primitive
92 //     ----------------------------------------------------------------
93 clear sin
94 path = pathconvert("TMPDIR/editest");
95 mkdir(path);
96 mputl("function a = sin(a),a = a+%pi, endfunction", path+"sin.sci");
97 genlib("sinlib", path);
98 sinlib = lib(path);
99 sinlib.sin(2);
100 edit sin     // Must display the following error:
101 // --> edit sin
102 // at line    78 of function edit ( SCI\modules\core\macros\edit.sci line 92 )
103 // edit: sin() is an uneditable hard coded function.
104 //
105 // NOTE: This could be improved by searching in loaded libraries
106 rmdir(path, "s");