/* * Copyright 2009 Google Inc. * * 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. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. The ASF * licenses this file to You 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. * * INCLUDES MODIFICATIONS BY GOOGLE. */ /** * author Elena Semukhina */ package com.google.gwt.emultest.java.math; import com.google.gwt.emultest.java.util.EmulTestBase; import java.math.BigInteger; /** * Class: java.math.BigInteger Method: xor. */ public class BigIntegerXorTest extends EmulTestBase { /** * Xor for two negative numbers; the first is longer. */ public void testNegNegFirstLonger() { String numA = "-2837462783428374767845648748973847593874837948575684767"; String numB = "-293478573489347658763745839457637"; String res = "2837462783428374767845615168483972194300564226167553530"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two negative numbers; the first is shorter. */ public void testNegNegFirstShorter() { String numA = "293478573489347658763745839457637"; String numB = "2837462783428374767845648748973847593874837948575684767"; String res = "2837462783428374767845615168483972194300564226167553530"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two negative numbers of the same length. */ public void testNegNegSameLength() { String numA = "-283746278342837476784564875684767"; String numB = "-293478573489347658763745839457637"; String res = "71412358434940908477702819237626"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for a negative number and zero. */ public void testNegPos() { String numA = "-27384627835298756289327365"; String numB = "0"; String res = "-27384627835298756289327365"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for a negative and a positive numbers; the first is longer. */ public void testNegPosFirstLonger() { String numA = "-2837462783428374767845648748973847593874837948575684767"; String numB = "293478573489347658763745839457637"; String res = "-2837462783428374767845615168483972194300564226167553532"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two negative numbers; the first is shorter. */ public void testNegPosFirstShorter() { String numA = "-293478573489347658763745839457637"; String numB = "2837462783428374767845648748973847593874837948575684767"; String res = "-2837462783428374767845615168483972194300564226167553532"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two numbers of different signs and the same length. */ public void testNegPosSameLength() { String numA = "-283746278342837476784564875684767"; String numB = "293478573489347658763745839457637"; String res = "-71412358434940908477702819237628"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for one and one. */ public void testOneOne() { String numA = "1"; String numB = "1"; String res = "0"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for a positive and a negative numbers; the first is longer. */ public void testPosNegFirstLonger() { String numA = "2837462783428374767845648748973847593874837948575684767"; String numB = "-293478573489347658763745839457637"; String res = "-2837462783428374767845615168483972194300564226167553532"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for a positive and a negative number; the first is shorter. */ public void testPosNegFirstShorter() { String numA = "293478573489347658763745839457637"; String numB = "-2837462783428374767845648748973847593874837948575684767"; String res = "-2837462783428374767845615168483972194300564226167553532"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two numbers of different signs and the same length. */ public void testPosNegSameLength() { String numA = "283746278342837476784564875684767"; String numB = "-293478573489347658763745839457637"; String res = "-71412358434940908477702819237628"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two positive numbers; the first is longer. */ public void testPosPosFirstLonger() { String numA = "2837462783428374767845648748973847593874837948575684767"; String numB = "293478573489347658763745839457637"; String res = "2837462783428374767845615168483972194300564226167553530"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two positive numbers; the first is shorter. */ public void testPosPosFirstShorter() { String numA = "293478573489347658763745839457637"; String numB = "2837462783428374767845648748973847593874837948575684767"; String res = "2837462783428374767845615168483972194300564226167553530"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for two positive numbers of the same length. */ public void testPosPosSameLength() { String numA = "283746278342837476784564875684767"; String numB = "293478573489347658763745839457637"; String res = "71412358434940908477702819237626"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for a positive number and zero. */ public void testPosZero() { String numA = "27384627835298756289327365"; String numB = "0"; String res = "27384627835298756289327365"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for zero and a negative number. */ public void testZeroNeg() { String numA = "0"; String numB = "-27384627835298756289327365"; String res = "-27384627835298756289327365"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for zero and one. */ public void testZeroOne() { String numA = "0"; String numB = "1"; String res = "1"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for zero and a positive number. */ public void testZeroPos() { String numA = "0"; String numB = "27384627835298756289327365"; String res = "27384627835298756289327365"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } /** * Xor for zero and zero. */ public void testZeroZero() { String numA = "0"; String numB = "0"; String res = "0"; BigInteger aNumber = new BigInteger(numA); BigInteger bNumber = new BigInteger(numB); BigInteger result = aNumber.xor(bNumber); assertTrue(res.equals(result.toString())); } }