#import #if __has_include("AllYourBaseExample.h") # import "AllYourBaseExample.h" # else # import "AllYourBase.h" #endif @interface AllYourBaseTest : XCTestCase @end @implementation AllYourBaseTest - (void)testSingleBitOneToDecimal { NSArray *result = [AllYourBase outputDigitsForInputBase:2 inputDigits:@[@1] outputBase:10]; NSArray *expected = @[@1]; XCTAssertEqualObjects(result, expected); } - (void)testBinaryToSingleDecimal { NSArray *result = [AllYourBase outputDigitsForInputBase:2 inputDigits:@[@1, @0, @1] outputBase:10]; NSArray *expected = @[@5]; XCTAssertEqualObjects(result, expected); } - (void)testSingleDecimalToBinary { NSArray *result = [AllYourBase outputDigitsForInputBase:10 inputDigits:@[@5] outputBase:2]; NSArray *expected = @[@1, @0, @1]; XCTAssertEqualObjects(result, expected); } - (void)testBinaryToMultipleDecimal { NSArray *result = [AllYourBase outputDigitsForInputBase:2 inputDigits:@[@1, @0, @1, @0, @1, @0] outputBase:10]; NSArray *expected = @[@4, @2]; XCTAssertEqualObjects(result, expected); } - (void)testDecimalToBinary { NSArray *result = [AllYourBase outputDigitsForInputBase:10 inputDigits:@[@4, @2] outputBase:2]; NSArray *expected = @[@1, @0, @1, @0, @1, @0]; XCTAssertEqualObjects(result, expected); } - (void)testTrinaryToHexadecimal { NSArray *result = [AllYourBase outputDigitsForInputBase:3 inputDigits:@[@1, @1, @2, @0] outputBase:16]; NSArray *expected = @[@2, @10]; XCTAssertEqualObjects(result, expected); } - (void)testHexadecimalToTrinary { NSArray *result = [AllYourBase outputDigitsForInputBase:16 inputDigits:@[@2, @10] outputBase:3]; NSArray *expected = @[@1, @1, @2, @0]; XCTAssertEqualObjects(result, expected); } - (void)test15BitInteger { NSArray *result = [AllYourBase outputDigitsForInputBase:97 inputDigits:@[@3, @46, @60] outputBase:73]; NSArray *expected = @[@6, @10, @45]; XCTAssertEqualObjects(result, expected); } - (void)testEmptyList { NSArray *result = [AllYourBase outputDigitsForInputBase:2 inputDigits:@[] outputBase:10]; NSArray *expected = @[]; XCTAssertEqualObjects(result, expected); } - (void)testSingleZero { NSArray *result = [AllYourBase outputDigitsForInputBase:10 inputDigits:@[@0] outputBase:2]; NSArray *expected = @[]; XCTAssertEqualObjects(result, expected); } - (void)testMultipleZeros { NSArray *result = [AllYourBase outputDigitsForInputBase:10 inputDigits:@[@0, @0, @0] outputBase:2]; NSArray *expected = @[]; XCTAssertEqualObjects(result, expected); } - (void)testLeadingZeros { NSArray *result = [AllYourBase outputDigitsForInputBase:7 inputDigits:@[@0, @6, @0] outputBase:10]; NSArray *expected = @[@4, @2]; XCTAssertEqualObjects(result, expected); } - (void)testNegativeDigit { NSArray *inputDigits = @[@1, @(-1), @1, @0, @1, @0]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:2 inputDigits:inputDigits outputBase:10]); } - (void)testInvalidPositiveDigit { NSArray *inputDigits = @[@1, @2, @1, @0, @1, @0]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:2 inputDigits:inputDigits outputBase:10]); } - (void)testFirstBaseIsOne { NSArray *inputDigits = @[]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:1 inputDigits:inputDigits outputBase:10]); } - (void)testSecondBaseIsOne { NSArray *inputDigits = @[@1, @0, @1, @0, @1, @0]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:2 inputDigits:inputDigits outputBase:1]); } - (void)testFirstBaseIsZero { NSArray *inputDigits = @[]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:0 inputDigits:inputDigits outputBase:10]); } - (void)testSecondBaseIsZero { NSArray *inputDigits = @[@7]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:10 inputDigits:inputDigits outputBase:0]); } - (void)testFirstBaseIsNegative { NSArray *inputDigits = @[@1]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:-2 inputDigits:inputDigits outputBase:10]); } - (void)testSecondBaseIsNegative { NSArray *inputDigits = @[@1]; XCTAssertThrows([AllYourBase outputDigitsForInputBase:2 inputDigits:inputDigits outputBase:-7]); } @end