* Bugs 16120 16121 16128 fixed: tree_show() with cells & void + improved
[scilab.git] / scilab / modules / data_structures / tests / unit_tests / tree_show.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2019 - Samuel GOUGEON
4 //
5 // This file is hereby licensed under the terms of the GNU GPL v2.0,
6 // pursuant to article 5.3.4 of the CeCILL v.2.1.
7 // This file was originally licensed under the terms of the CeCILL v2.1,
8 // and continues to be available under such terms.
9 // For more information, see the COPYING file which you should have received
10 // along with this program.
11 // =============================================================================
12
13 // <-- INTERACTIVE TEST -->
14
15 // unitary tests of tree_show()
16 // =============================================================================
17
18 // INPUT STRUCTURE
19 // ===============
20 clear f
21 films(1) = struct("Title", "A.I. Artificial Intelligence",..
22                   "Year", 2001, ..
23                   "Director", "Steven Spielberg", ..
24                   "Duration", 140);
25 films(2) = struct("Title", "I, robot", ..
26                   "Year", 2004, ..
27                   "Director", "Alex Proyas", ..
28                   "Duration", 120);
29 films(1,2) = struct("Title", "Gravity", ..
30                     "Year", 2013, ..
31                     "Director", "Alfonso Cuarón", ..
32                     "Duration", 100);
33 films(2,2) = struct("Title", "2001: A space odyssey", ..
34                     "Year", 1968, ..
35                     "Director", "Stanley Kubrick", ..
36                     "Duration", 141);
37 // 1)
38 tree_show(films(:), "films(:) (by indices)");
39 // Checking
40 // --------
41 // * films(:) is a vector => displayed indices are simple.
42 // * Root title = films(:) (by indices) [4x1 struct]
43 // * Main items : 1: ↴  2: ↴  3: ↴  4:↴   (in blue and folded)
44 //   1: Subitems: Title: "A.I. Artificial Intelligence" 
45 //                Year: 2001
46 //                Director: "Steven Spielberg"
47 //                Duration: 140
48 //                Title:, Year:, Director: and Duration: are in blue
49 //                Their values are in black
50 //   Same thing for 2:, 3:, and 4:.
51
52 // 2)
53 tree_show(films, "films (by indices)");
54 // Checking
55 // --------
56 // * films is a matrix => displayed indices are detailled: (i,j,..)
57 // * Root title = films (by indices) [2x2 struct]
58 // * Same as in test 1), except that 1: ↴  is now (1,1): ↴
59 //                                   2: ↴  is now (2,1): ↴
60 //                                   3: ↴  is now (1,2): ↴
61 //                                   4: ↴  is now (2,2): ↴
62 // ArrayByFields option
63 // --------------------
64 // 3)
65 tree_show(films(:), "films(:) (by fields)",, %t);
66 // Checking
67 // --------
68 // films(:) is a vector => displayed indices are simple.
69 // Root title = films(:) (by fields) [4x1 struct]
70 // Main items = Title:, Year:, Director: and Duration:  (in blue and folded)
71 //   Unfold "Title": Subitems:
72 //           1: "A.I. Artificial Intelligence" 
73 //           2: "I, robot"
74 //           3: "Gravity"
75 //           4: "2001: A space odyssey"
76 //       1: 2: 3: and 4: are in blue. Titles are in black.
77 //   Same thing for Year:, Director: and Duration:
78
79
80 // 4)
81 tree_show(films, "films (by fields)",, %t);
82 // Checking
83 // --------
84 // Same as 3), except:
85 //  * films is a matrix => displayed indices are detailled: (i,j,..)
86 //  * Root title = films (by fields) [2x2 struct]
87
88
89 // 5) EMPTY | VOID COMPONENTS (& list)
90 // ===================================
91 L = list([], ..
92          list(), ..
93          list(,%pi), ..     // first element is void
94          struct(), ..
95          sparse([],[]), ..
96          {}, ..
97          mlist(""), ..
98          tlist(""));
99 tree_show(L, "Empty or void components");
100 // Checking
101 // --------
102 // The following tree must be displayed (all indices in blue, contents in black):
103 //    Empty or void components [list]
104 //       1: []
105 //       2: list()
106 //       3: [list]
107 //          1:
108 //          2: 3.1415927
109 //       4: struct()
110 //       5: sparse([],[],[0,0])
111 //       6: { }
112 //       7: mlist("")
113 //       8: tlist("")
114
115
116 // 6) STYLING THE MAIN TITLE WITH HTML
117 // ===================================
118 rootTitle = "<html><font color=""red"" size=""4""><b>Films</b> (Science fiction)</font>";
119 tree_show(films, rootTitle, ,%t)
120 // Checking
121 // --------
122 // In the main title:
123 //  "Films"             must be in bold red and slightly bigger
124 //  "(Science fiction)" must be in red normal size
125 //  "[2x2 struct]"      must be in black normal size
126
127
128 // 7) STYLING ADDRESSES OR/AND CONTENTS
129 // ====================================
130 // 7.a) Removing default addresses style => in black
131 tree_show(films, , "", %t)
132 // Check that fields names and indices are in black
133
134 // 7.b) Setting fields names and indices in small bold
135 tree_show(films, , "<font size=""2""><b>$</b></font>", %t)
136 // Check that fields names and indices are in small bold black
137
138 // 7.c) Setting contents in italic
139 tree_show(films, , "$<i>", %t)
140 // Check that fields names and indices are in normal black,
141 //  and contents in italic black
142
143 // 7.d) Setting addresses in small red, and contents in italic
144 tree_show(films, , "<font color=""red""><small>$</small></font><i>", %t)
145 // Check that fields names and indices are in small red,
146 //  and contents is in italic black
147
148
149 // 8) INPUT CELLS ARRAY
150 // ====================
151 c = {
152     [%t %f %f],                             list(,)(1),     ["This" "is" "some" "text"]
153      int8([1 2 3 ; 4 5 6]),                 sin,    list(%pi,"abcd",,(%i-%s)^3)
154      [-%inf, -1, 0, %i, 7.1, 3.3e20, %inf, %nan], logspace, {}
155      sparse([0 1 2; 3 0 4]),                iolib,          films(1,:)
156     };
157 // Expected display (with blue indices and fields names):
158 //
159 // [4x3 cell]
160 //    (1,1) : [T F F]
161 //    (2,1) : int8([1, 2, 3 ; 4, 5, 6])
162 //    (3,1) : [-Inf, -1, 0, i, 7.1, 3.300D+20, Inf, Nan]
163 //    (4,1) : sparse([1, 2 ; 1, 3 ; 2, 1 ; 2, 3], [1 ; 2 ; 3 ; 4], [2, 3])
164 //    (1,2) : $:-1:3
165 //    (2,2) : fptr
166 //    (3,2) : logspace() (42 lines)
167 //    (4,2) : iolib library of 6 functions @ SCI\modules\io\macros\
168 //    (1,3) : ["This", "is", "some", "text"]
169 //    (2,3) :  [list]
170 //        1: 3.1415927
171 //        2: "abcd"
172 //        3: 
173 //        4: -i+3s+(i3)s^2-s^3
174 //    (3,3) :  { }
175 //    (4,3) :  [struct]
176 //        Title: "A.I. Artificial Intelligence"
177 //        Year: 2001
178 //        Director: "Steven Spielberg"
179 //        Duration: 140
180