/** * Copyright 2012 Tobias Gierke <tobias.gierke@code-sourcery.de> * * 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. */ package de.codesourcery.jasm16; import junit.framework.TestCase; public class AddressTest extends TestCase { public void testCompareTo1() { assertEquals( -1 , Address.byteAddress( 1 ).compareTo( Address.byteAddress( 2 ) ) ); assertEquals( 0 , Address.byteAddress( 1 ).compareTo( Address.byteAddress( 1 ) ) ); assertEquals( 1 , Address.byteAddress( 2 ).compareTo( Address.byteAddress( 1 ) ) ); assertTrue( Address.byteAddress( 1 ).isLessThan( Address.byteAddress( 2 ) ) ); assertTrue( Address.byteAddress( 1 ).isEqualOrLessThan( Address.byteAddress( 2 ) ) ); assertEquals( 0 , Address.byteAddress( 1 ).compareTo( Address.byteAddress( 1 ) ) ); assertTrue( Address.byteAddress( 1 ).equals( Address.byteAddress( 1 ) ) ); assertEquals( 1 , Address.byteAddress( 2 ).compareTo( Address.byteAddress( 1 ) ) ); assertTrue( Address.byteAddress( 2 ).isGreaterThan( Address.byteAddress( 1 ) ) ); assertTrue( Address.byteAddress( 2 ).isEqualOrGreaterThan( Address.byteAddress( 1 ) ) ); } public void testCompareTo2() { assertEquals( -1 , Address.wordAddress( 1 ).compareTo( Address.wordAddress( 2 ) ) ); assertEquals( 0 , Address.wordAddress( 1 ).compareTo( Address.wordAddress( 1 ) ) ); assertEquals( 1 , Address.wordAddress( 2 ).compareTo( Address.wordAddress( 1 ) ) ); } public void testCompareTo3() { assertEquals( -1 , Address.wordAddress( 1 ).compareTo( Address.byteAddress( 3 ) ) ); assertEquals( 0 , Address.wordAddress( 1 ).compareTo( Address.byteAddress( 2 ) ) ); assertEquals( 1 , Address.wordAddress( 2 ).compareTo( Address.byteAddress( 1 ) ) ); } public void testSubtractionOnWordAddresses() { final Address adr1 = Address.wordAddress( 0 ); final Address sum1 = adr1.minus( Size.words( 1 ) ); assertEquals( Address.wordAddress( 0xffff ) , sum1 ); final Address adr3 = Address.wordAddress( 1 ); final Address sum2 = adr3.minus( Size.words( 1 ) ); assertEquals( Address.wordAddress( 0 ) , sum2 ); } public void testSubtractionOnByteAddresses() { final Address adr1 = Address.byteAddress( 0 ); final Address sum1 = adr1.minus( Size.bytes( 1 ) ); assertEquals( Address.byteAddress( 0x20000 - 1 ) , sum1 ); final Address adr3 = Address.byteAddress( 1 ); final Address sum2 = adr3.minus( Size.bytes( 1 ) ); assertEquals( Address.byteAddress( 0 ) , sum2 ); } public void testAdditionOnWordAddresses() { final Address adr1 = Address.wordAddress( 0 ); final Address sum1 = adr1.plus( Size.words( 1 ) , true ); assertEquals( Address.wordAddress( 1 ) , sum1 ); final Address adr3 = Address.wordAddress( 0xffff ); final Address sum2 = adr3.plus( Size.words( 1 ) , true ); // wrap-around assertEquals( Address.wordAddress( 0 ) , sum2 ); final Address adr4 = Address.wordAddress( 0xffff ); final Address sum3 = adr4.plus( Size.words( 1 ) , false ); // no wrap assertEquals( Address.wordAddress( 0x10000 ) , sum3 ); } public void testAdditionOnByteAddresses() { final Address adr1 = Address.byteAddress( 0 ); final Address sum1 = adr1.plus( Size.bytes( 1 ) , true ); assertEquals( Address.byteAddress( 1 ) , sum1 ); final Address adr3 = Address.byteAddress( (0xffff * 2) + 1 ); final Address sum2 = adr3.plus( Size.bytes( 1 ) , true ); // wrap-around assertEquals( Address.byteAddress( 0 ) , sum2 ); final Address adr4 = Address.byteAddress( (0xffff * 2) + 1 ); final Address sum3 = adr4.plus( Size.bytes( 1 ) , false ); // no wrap assertEquals( Address.byteAddress( 0x20000 ) , sum3 ); } }