1%% 2%% %CopyrightBegin% 3%% 4%% Copyright Ericsson AB 2005-2016. All Rights Reserved. 5%% 6%% Licensed under the Apache License, Version 2.0 (the "License"); 7%% you may not use this file except in compliance with the License. 8%% You may obtain a copy of the License at 9%% 10%% http://www.apache.org/licenses/LICENSE-2.0 11%% 12%% Unless required by applicable law or agreed to in writing, software 13%% distributed under the License is distributed on an "AS IS" BASIS, 14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15%% See the License for the specific language governing permissions and 16%% limitations under the License. 17%% 18%% %CopyrightEnd% 19%% 20-module(otp_5632). 21-export([?MODULE/0]). 22-export([pstnproxy_add_headers/2,macosx_workaround/0,fast_cut/3,test/1,test2/1, 23 create_int_jumper_cables/1]). 24 25-import(lists, [foldl/3,last/1,member/2,reverse/1,reverse/2,seq/2,sort/1]). 26 27?MODULE() -> 28 ok. 29 30-record(request, { 31 header 32 }). 33 34 35-record(siporigin, { 36 proto 37 }). 38 39 40%% Test a problem in beam_jump.erl. 41pstnproxy_add_headers(Request, Origin) when is_record(Request, request), 42 is_record(Origin, siporigin) -> 43 NewHeaders1 = Request#request.header, 44 NewHeaders2 = 45 case (Origin#siporigin.proto == tls) or (Origin#siporigin.proto == tls6) of 46 true -> 47 keylist:delete("X-Foo2", NewHeaders1); 48 false -> 49 keylist:delete("X-Foo2", NewHeaders1) 50 end, 51 NewHeaders3 = 52 case (Origin#siporigin.proto == tls) or (Origin#siporigin.proto == tls6) of 53 true -> 54 keylist:delete("X-Foo3", NewHeaders2); 55 false -> 56 keylist:delete("X-Foo3", NewHeaders2) 57 end, 58 Request#request{header = NewHeaders3}. 59 60%% Test a problem in beam_validator.erl. 61macosx_workaround() -> 62 try 1.0/zero() 63 catch 64 error:_ -> ok 65 end. 66 67zero() -> 0.0. 68 69-record(we, {id, 70 perm = 0, 71 name, 72 es, 73 fs, 74 he, 75 vc, 76 vp, 77 mat = default, 78 next_id, 79 mode, 80 mirror = none, 81 light = none, 82 has_shape = true}). 83 84-record(edge, {vs, 85 ve, 86 a = none, 87 b = none, 88 lf, 89 rf, 90 ltpr, 91 ltsu, 92 rtpr, 93 rtsu}). 94 95 96fast_cut(Edge,Pos0,We0) -> 97 {NewEdge = NewV,We} = wings_we:new_ids(1,We0), 98 #we{es = Etab0, 99 vc = Vct0, 100 vp = Vtab0, 101 he = Htab0} = We, 102 Template = gb_trees:get(Edge,Etab0), 103 #edge{vs = Vstart, 104 ve = Vend, 105 a = ACol, 106 b = BCol, 107 lf = Lf, 108 rf = Rf, 109 ltpr = EdgeA, 110 rtsu = EdgeB, 111 rtpr = NextBCol} = Template, 112 VendPos = gb_trees:get(Vend,Vtab0), 113 Vct1 = gb_trees:update(Vend,NewEdge,Vct0), 114 VstartPos = wings_vertex:pos(Vstart,Vtab0), 115 if 116 Pos0 =:= default -> 117 NewVPos0 = e3d_vec:average([VstartPos,VendPos]); 118 true -> 119 NewVPos0 = Pos0 120 end, 121 NewVPos = wings_util:share(NewVPos0), 122 Vct = gb_trees:insert(NewV,NewEdge,Vct1), 123 Vtab = gb_trees:insert(NewV,NewVPos,Vtab0), 124 AColOther = ?MODULE:get_vtx_color(EdgeA,Lf,Etab0), 125 BColOther = ?MODULE:get_vtx_color(NextBCol,Rf,Etab0), 126 Weight = if 127 Pos0 == default -> 128 0.500000; 129 true -> 130 ADist = e3d_vec:dist(Pos0,VstartPos), 131 BDist = e3d_vec:dist(Pos0,VendPos), 132 try 133 ADist / (ADist + BDist) 134 catch 135 error:badarith -> 136 0.500000 137 end 138 end, 139 NewColA = wings_color:mix(Weight,AColOther,ACol), 140 NewColB = wings_color:mix(Weight,BCol,BColOther), 141 NewEdgeRec = Template#edge{vs = NewV, 142 a = NewColA, 143 ltsu = Edge, 144 rtpr = Edge}, 145 Etab1 = gb_trees:insert(NewEdge,NewEdgeRec,Etab0), 146 Etab2 = ?MODULE:patch_edge(EdgeA,NewEdge,Edge,Etab1), 147 Etab3 = ?MODULE:patch_edge(EdgeB,NewEdge,Edge,Etab2), 148 EdgeRec = Template#edge{ve = NewV, 149 b = NewColB, 150 rtsu = NewEdge, 151 ltpr = NewEdge}, 152 Etab = gb_trees:update(Edge,EdgeRec,Etab3), 153 Htab = case gb_sets:is_member(Edge,Htab0) of 154 false -> 155 Htab0; 156 true -> 157 gb_sets:insert(NewEdge,Htab0) 158 end, 159 {We#we{es = Etab, 160 vc = Vct, 161 vp = Vtab, 162 he = Htab},NewV}. 163 164%% A problem in beam_bool. 165 166-record(a, {a,b,c}). 167 168test(As) -> 169 case As of 170 A when A#a.b == []; A#a.b == undefined -> 171 true; 172 _ -> 173 false 174 end. 175 176test2(As) -> 177 case As of 178 A when A#a.b == {a,b,c}; A#a.b == undefined -> 179 true; 180 _ -> 181 false 182 end. 183 184%% Record updating problems. 185 186-record(int_jumper_cable, {id, 187 connectionFieldRef, 188 aiuPlugInUnitRef, 189 connFieldConnector, 190 aiuConnector, 191 dlAttenuation = 1, 192 ulAttenuation = 1, 193 electricalDlDelay = 100, 194 electricalUlDelay = 100, 195 optionals = []}). 196 197create_int_jumper_cables(_Config) -> 198 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},637}), 199 ct:comment("Create IntJumperCable MO"), 200 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},639}), 201 Parent = "ManagedElement=1,Equipment=1", 202 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},641}), 203 I1 = #int_jumper_cable{id = 1, 204 connectionFieldRef = Parent ++ ",ConnectionField=1", 205 aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=6,PlugInUnit=1", 206 connFieldConnector = "J1", 207 aiuConnector = 1}, 208 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},650}), 209 I2 = I1#int_jumper_cable{id = 2, 210 connFieldConnector = "H1", 211 aiuConnector = 2}, 212 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},657}), 213 I3 = I1#int_jumper_cable{id = 3, 214 aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=9,PlugInUnit=1", 215 connFieldConnector = "J2"}, 216 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},663}), 217 I4 = I3#int_jumper_cable{id = 4, 218 connFieldConnector = "H2", 219 aiuConnector = 2}, 220 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},670}), 221 I5 = I1#int_jumper_cable{id = 5, 222 aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=12,PlugInUnit=1", 223 connFieldConnector = "J3"}, 224 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},677}), 225 I6 = I5#int_jumper_cable{id = 6, 226 connFieldConnector = "H3", 227 aiuConnector = 2}, 228 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},684}), 229 [_MO1,_MO2,_MO3,_MO4,_MO5,_MO6] = mub_util:create(mp_mub,Parent,[I1,I2,I3,I4,I5,I6]), 230 ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},686}), 231 ok. 232