%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2005-2016. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%
-module(otp_5632).
-export([?MODULE/0]).
-export([pstnproxy_add_headers/2,macosx_workaround/0,fast_cut/3,test/1,test2/1,
create_int_jumper_cables/1]).
-import(lists, [foldl/3,last/1,member/2,reverse/1,reverse/2,seq/2,sort/1]).
?MODULE() ->
ok.
-record(request, {
header
}).
-record(siporigin, {
proto
}).
%% Test a problem in beam_jump.erl.
pstnproxy_add_headers(Request, Origin) when is_record(Request, request),
is_record(Origin, siporigin) ->
NewHeaders1 = Request#request.header,
NewHeaders2 =
case (Origin#siporigin.proto == tls) or (Origin#siporigin.proto == tls6) of
true ->
keylist:delete("X-Foo2", NewHeaders1);
false ->
keylist:delete("X-Foo2", NewHeaders1)
end,
NewHeaders3 =
case (Origin#siporigin.proto == tls) or (Origin#siporigin.proto == tls6) of
true ->
keylist:delete("X-Foo3", NewHeaders2);
false ->
keylist:delete("X-Foo3", NewHeaders2)
end,
Request#request{header = NewHeaders3}.
%% Test a problem in beam_validator.erl.
macosx_workaround() ->
try 1.0/zero()
catch
error:_ -> ok
end.
zero() -> 0.0.
-record(we, {id,
perm = 0,
name,
es,
fs,
he,
vc,
vp,
mat = default,
next_id,
mode,
mirror = none,
light = none,
has_shape = true}).
-record(edge, {vs,
ve,
a = none,
b = none,
lf,
rf,
ltpr,
ltsu,
rtpr,
rtsu}).
fast_cut(Edge,Pos0,We0) ->
{NewEdge = NewV,We} = wings_we:new_ids(1,We0),
#we{es = Etab0,
vc = Vct0,
vp = Vtab0,
he = Htab0} = We,
Template = gb_trees:get(Edge,Etab0),
#edge{vs = Vstart,
ve = Vend,
a = ACol,
b = BCol,
lf = Lf,
rf = Rf,
ltpr = EdgeA,
rtsu = EdgeB,
rtpr = NextBCol} = Template,
VendPos = gb_trees:get(Vend,Vtab0),
Vct1 = gb_trees:update(Vend,NewEdge,Vct0),
VstartPos = wings_vertex:pos(Vstart,Vtab0),
if
Pos0 =:= default ->
NewVPos0 = e3d_vec:average([VstartPos,VendPos]);
true ->
NewVPos0 = Pos0
end,
NewVPos = wings_util:share(NewVPos0),
Vct = gb_trees:insert(NewV,NewEdge,Vct1),
Vtab = gb_trees:insert(NewV,NewVPos,Vtab0),
AColOther = ?MODULE:get_vtx_color(EdgeA,Lf,Etab0),
BColOther = ?MODULE:get_vtx_color(NextBCol,Rf,Etab0),
Weight = if
Pos0 == default ->
0.500000;
true ->
ADist = e3d_vec:dist(Pos0,VstartPos),
BDist = e3d_vec:dist(Pos0,VendPos),
try
ADist / (ADist + BDist)
catch
error:badarith ->
0.500000
end
end,
NewColA = wings_color:mix(Weight,AColOther,ACol),
NewColB = wings_color:mix(Weight,BCol,BColOther),
NewEdgeRec = Template#edge{vs = NewV,
a = NewColA,
ltsu = Edge,
rtpr = Edge},
Etab1 = gb_trees:insert(NewEdge,NewEdgeRec,Etab0),
Etab2 = ?MODULE:patch_edge(EdgeA,NewEdge,Edge,Etab1),
Etab3 = ?MODULE:patch_edge(EdgeB,NewEdge,Edge,Etab2),
EdgeRec = Template#edge{ve = NewV,
b = NewColB,
rtsu = NewEdge,
ltpr = NewEdge},
Etab = gb_trees:update(Edge,EdgeRec,Etab3),
Htab = case gb_sets:is_member(Edge,Htab0) of
false ->
Htab0;
true ->
gb_sets:insert(NewEdge,Htab0)
end,
{We#we{es = Etab,
vc = Vct,
vp = Vtab,
he = Htab},NewV}.
%% A problem in beam_bool.
-record(a, {a,b,c}).
test(As) ->
case As of
A when A#a.b == []; A#a.b == undefined ->
true;
_ ->
false
end.
test2(As) ->
case As of
A when A#a.b == {a,b,c}; A#a.b == undefined ->
true;
_ ->
false
end.
%% Record updating problems.
-record(int_jumper_cable, {id,
connectionFieldRef,
aiuPlugInUnitRef,
connFieldConnector,
aiuConnector,
dlAttenuation = 1,
ulAttenuation = 1,
electricalDlDelay = 100,
electricalUlDelay = 100,
optionals = []}).
create_int_jumper_cables(_Config) ->
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},637}),
ct:comment("Create IntJumperCable MO"),
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},639}),
Parent = "ManagedElement=1,Equipment=1",
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},641}),
I1 = #int_jumper_cable{id = 1,
connectionFieldRef = Parent ++ ",ConnectionField=1",
aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=6,PlugInUnit=1",
connFieldConnector = "J1",
aiuConnector = 1},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},650}),
I2 = I1#int_jumper_cable{id = 2,
connFieldConnector = "H1",
aiuConnector = 2},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},657}),
I3 = I1#int_jumper_cable{id = 3,
aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=9,PlugInUnit=1",
connFieldConnector = "J2"},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},663}),
I4 = I3#int_jumper_cable{id = 4,
connFieldConnector = "H2",
aiuConnector = 2},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},670}),
I5 = I1#int_jumper_cable{id = 5,
aiuPlugInUnitRef = Parent ++ ",Subrack=2,Slot=12,PlugInUnit=1",
connFieldConnector = "J3"},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},677}),
I6 = I5#int_jumper_cable{id = 6,
connFieldConnector = "H3",
aiuConnector = 2},
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},684}),
[_MO1,_MO2,_MO3,_MO4,_MO5,_MO6] = mub_util:create(mp_mub,Parent,[I1,I2,I3,I4,I5,I6]),
ct_line:line({{ccl_setup_SUITE,create_int_jumper_cables},686}),
ok.