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.
		
		
		
		
		
			
		
			
	
	
		
			61 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
| 
											8 years ago
										 | // | ||
|  | //  Copyright (c) 2017 Open Whisper Systems. All rights reserved. | ||
|  | // | ||
|  | 
 | ||
|  | import XCTest | ||
|  | 
 | ||
|  | class SearcherTest: XCTestCase { | ||
|  | 
 | ||
|  |     struct TestCharacter { | ||
|  |         let name: String | ||
|  |         let description: String | ||
|  |     } | ||
|  | 
 | ||
|  |     let smerdyakov = TestCharacter(name: "Pavel Fyodorovich Smerdyakov", description: "A rusty hue in the sky") | ||
|  |     let stinkingLizaveta = TestCharacter(name: "Stinking Lizaveta", description: "object of pity") | ||
|  |     let regularLizaveta = TestCharacter(name: "Lizaveta", description: "") | ||
|  | 
 | ||
|  |     let indexer = { (character: TestCharacter) in | ||
|  |         return "\(character.name) \(character.description)" | ||
|  |     } | ||
|  | 
 | ||
|  |     var searcher: Searcher<TestCharacter> { | ||
|  |         return Searcher(indexer: indexer) | ||
|  |     } | ||
|  | 
 | ||
|  |     override func setUp() { | ||
|  |         super.setUp() | ||
|  |         // Put setup code here. This method is called before the invocation of each test method in the class. | ||
|  |     } | ||
|  | 
 | ||
|  |     override func tearDown() { | ||
|  |         // Put teardown code here. This method is called after the invocation of each test method in the class. | ||
|  |         super.tearDown() | ||
|  |     } | ||
|  | 
 | ||
|  |     func testSimple() { | ||
|  |         XCTAssert(searcher.matches(item: smerdyakov, query: "Pavel")) | ||
|  |         XCTAssert(searcher.matches(item: smerdyakov, query: "pavel")) | ||
|  |         XCTAssertFalse(searcher.matches(item: smerdyakov, query: "asdf")) | ||
|  |         XCTAssertFalse(searcher.matches(item: smerdyakov, query: "")) | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "Pity")) | ||
|  |     } | ||
|  | 
 | ||
|  |     func testRepeats() { | ||
|  |         XCTAssert(searcher.matches(item: smerdyakov, query: "pavel pavel")) | ||
|  |         XCTAssertFalse(searcher.matches(item: smerdyakov, query: "pavelpavel")) | ||
|  |     } | ||
|  | 
 | ||
|  |     func testSplitWords() { | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "Lizaveta")) | ||
|  |         XCTAssert(searcher.matches(item: regularLizaveta, query: "Lizaveta")) | ||
|  | 
 | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "Stinking Lizaveta")) | ||
|  |         XCTAssertFalse(searcher.matches(item: regularLizaveta, query: "Stinking Lizaveta")) | ||
|  | 
 | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "Lizaveta Stinking")) | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "Lizaveta St")) | ||
|  |         XCTAssert(searcher.matches(item: stinkingLizaveta, query: "  Lizaveta St ")) | ||
|  |     } | ||
|  | } |