mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			222 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			222 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Swift
		
	
| //
 | |
| //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| import XCTest
 | |
| @testable import Signal
 | |
| 
 | |
| class ByteParserTest: XCTestCase {
 | |
| 
 | |
|     override func setUp() {
 | |
|         super.setUp()
 | |
|     }
 | |
| 
 | |
|     override func tearDown() {
 | |
|         // Put teardown code here. This method is called after the invocation of each test method in the class.
 | |
|         super.tearDown()
 | |
|     }
 | |
| 
 | |
|     func testGetShort_Empty() {
 | |
|         let parser = ByteParser(data: Data(), littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextShort())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetShort_littleEndian() {
 | |
|         let data = Data(bytes: [0x01, 0x00, 0x00, 0x01, 0x01, 0x01 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextShort())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetShort_bigEndian() {
 | |
|         let data = Data(bytes: [0x01, 0x00, 0x00, 0x01, 0x01, 0x01 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: false)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextShort())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextShort())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetInt_Empty() {
 | |
|         let parser = ByteParser(data: Data(), littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextInt())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetInt_littleEndian() {
 | |
|         let data = Data(bytes: [0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextInt())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetInt_bigEndian() {
 | |
|         let data = Data(bytes: [0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: false)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextInt())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextInt())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetLong_Empty() {
 | |
|         let parser = ByteParser(data: Data(), littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextLong())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetLong_littleEndian() {
 | |
|         let data = Data(bytes: [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextLong())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testGetLong_bigEndian() {
 | |
|         let data = Data(bytes: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01 ])
 | |
|         let parser = ByteParser(data: data, littleEndian: false)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(1, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(256, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(257, parser.nextLong())
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(0, parser.nextLong())
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testReadZero_Empty() {
 | |
|         let parser = ByteParser(data: Data(), littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertFalse(parser.readZero(1))
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testReadZero() {
 | |
|         let data = Data(bytes: [0x00, 0x01, 0x00, 0x00, 0x01, 0x00])
 | |
|         let parser = ByteParser(data: data, littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertTrue(parser.readZero(1))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertFalse(parser.readZero(1))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertTrue(parser.readZero(2))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertFalse(parser.readZero(2))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertFalse(parser.readZero(1))
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testReadBytes_Empty() {
 | |
|         let parser = ByteParser(data: Data(), littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertNil(parser.readBytes(1))
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| 
 | |
|     func testReadBytes() {
 | |
|         let data = Data(bytes: [0x00, 0x01, 0x02, 0x03, 0x04, 0x05])
 | |
|         let parser = ByteParser(data: data, littleEndian: true)
 | |
|         XCTAssertNotNil(parser)
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(Data(bytes: [0x00 ]), parser.readBytes(1))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(Data(bytes: [0x01 ]), parser.readBytes(1))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(Data(bytes: [0x02, 0x03]), parser.readBytes(2))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertEqual(Data(bytes: [0x04, 0x05]), parser.readBytes(2))
 | |
|         XCTAssertFalse(parser.hasError)
 | |
| 
 | |
|         XCTAssertNil(parser.readBytes(1))
 | |
|         XCTAssertTrue(parser.hasError)
 | |
|     }
 | |
| }
 |