diff options
author | Vlad Dumitrescu <[email protected]> | 2014-05-19 12:18:58 +0200 |
---|---|---|
committer | Vlad Dumitrescu <[email protected]> | 2014-07-21 18:02:17 +0200 |
commit | 0725d5cdf30b740b5c90b9fd355401161f14f401 (patch) | |
tree | 7f5295fbf8787d08a86a73e48e58ed56db86bafa /lib/jinterface/test/jinterface_SUITE_data/FunEquals.java | |
parent | e7e750a40ff875e6d62f1e7904470222ac8de269 (diff) | |
download | otp-0725d5cdf30b740b5c90b9fd355401161f14f401.tar.gz otp-0725d5cdf30b740b5c90b9fd355401161f14f401.tar.bz2 otp-0725d5cdf30b740b5c90b9fd355401161f14f401.zip |
jinterface: fix bug in equality for OtpErlangFun
Arrays (here: md5 and freeVars) must not be compared with equals, which
is broken.
Diffstat (limited to 'lib/jinterface/test/jinterface_SUITE_data/FunEquals.java')
-rw-r--r-- | lib/jinterface/test/jinterface_SUITE_data/FunEquals.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/jinterface/test/jinterface_SUITE_data/FunEquals.java b/lib/jinterface/test/jinterface_SUITE_data/FunEquals.java new file mode 100644 index 0000000000..14f884cee7 --- /dev/null +++ b/lib/jinterface/test/jinterface_SUITE_data/FunEquals.java @@ -0,0 +1,71 @@ +/* + * %CopyrightBegin% + * + * Copyright Ericsson AB 2004-2010. All Rights Reserved. + * + * The contents of this file are subject to the Erlang Public License, + * Version 1.1, (the "License"); you may not use this file except in + * compliance with the License. You should have received a copy of the + * Erlang Public License along with this software. If not, it can be + * retrieved online at http://www.erlang.org/. + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * %CopyrightEnd% + */ + +import java.util.Arrays; + +import com.ericsson.otp.erlang.*; + +public class FunEquals { + + /* + Implements test case jinterface_SUITE:fun_equals/1 + + Test the function OtpErlangFun.equals() + */ + + public static void main(String argv[]) { + + OtpErlangPid pid = new OtpErlangPid("here", 4, 5, 0); + String module = "mod"; + int arity = 2; + byte[] md5 = new byte[]{3,5,7}; + int index = 2; + long old_index = 1; + long uniq= 2; + OtpErlangObject[] freeVars = new OtpErlangObject[]{ + new OtpErlangAtom("hej"), new OtpErlangLong(9) + }; + + OtpErlangFun f1 = new OtpErlangFun(pid, module, arity, md5, + index, old_index, uniq, freeVars); + OtpErlangFun f2 = new OtpErlangFun(pid, module, arity, copyArray(md5), + index, old_index, uniq, copyArray(freeVars)); + + if(!f1.equals(f2)) + fail(1); + + } + + private static void fail(int reason) { + System.exit(reason); + } + + private static byte[] copyArray(byte[] source) { + byte[] result = new byte[source.length]; + System.arraycopy(source, 0, result, 0, source.length); + return result; + } + + private static OtpErlangObject[] copyArray(OtpErlangObject[] source) { + OtpErlangObject[] result = new OtpErlangObject[source.length]; + System.arraycopy(source, 0, result, 0, source.length); + return result; + } + +} |