diff options
author | August Mueller <gus@flyingmeat.com> | 2015-01-22 21:49:33 +0300 |
---|---|---|
committer | August Mueller <gus@flyingmeat.com> | 2015-01-22 21:49:33 +0300 |
commit | 48c333a82f7ea30b5548e50a89137e7947a398fa (patch) | |
tree | 899d6fa2693ea9e6652e01e23dbed7f84afc62a0 | |
parent | 87ae93c40d1b81b6d2e06cf04b72fa704363f383 (diff) | |
parent | 52371b07bb745211b854d9b4e241cae3ff459e93 (diff) |
Merge branch 'module_name' of git://github.com/stephanheilner/fmdb into stephanheilner-module_name
-rw-r--r-- | FMDB.podspec | 4 | ||||
-rw-r--r-- | Tests/FMDatabaseFTS3Tests.m | 2 | ||||
-rw-r--r-- | Tests/FMDatabaseFTS3WithModuleNameTests.m | 83 | ||||
-rw-r--r-- | fmdb.xcodeproj/project.pbxproj | 4 |
4 files changed, 90 insertions, 3 deletions
diff --git a/FMDB.podspec b/FMDB.podspec index efde337..5918893 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = 'FMDB' - s.version = '2.4.1' + s.version = '2.5' s.summary = 'A Cocoa / Objective-C wrapper around SQLite.' s.homepage = 'https://github.com/ccgus/fmdb' s.license = 'MIT' s.author = { 'August Mueller' => 'gus@flyingmeat.com' } - s.source = { :git => 'https://github.com/ccgus/fmdb.git', :tag => 'v2.4.1' } + s.source = { :git => 'https://github.com/ccgus/fmdb.git', :tag => 'v2.5' } s.requires_arc = true s.default_subspec = 'standard' diff --git a/Tests/FMDatabaseFTS3Tests.m b/Tests/FMDatabaseFTS3Tests.m index 339aa80..7984f39 100644 --- a/Tests/FMDatabaseFTS3Tests.m +++ b/Tests/FMDatabaseFTS3Tests.m @@ -27,7 +27,7 @@ static id<FMTokenizerDelegate> g_testTok = nil; // Create a tokenizer instance that will not be de-allocated when the method finishes. g_testTok = [[FMSimpleTokenizer alloc] initWithLocale:NULL]; - [FMDatabase registerTokenizer:g_testTok withName:@"testTok"]; + [FMDatabase registerTokenizer:g_testTok withKey:@"testTok"]; } - (void)setUp diff --git a/Tests/FMDatabaseFTS3WithModuleNameTests.m b/Tests/FMDatabaseFTS3WithModuleNameTests.m new file mode 100644 index 0000000..f48cc1e --- /dev/null +++ b/Tests/FMDatabaseFTS3WithModuleNameTests.m @@ -0,0 +1,83 @@ +// +// FMDatabaseFTS3WithKeyTests.m +// fmdb +// +// Created by Stephan Heilner on 1/21/15. +// +// + +#import "FMDBTempDBTests.h" +#import "FMDatabase+FTS3.h" +#import "FMTokenizers.h" + +@interface FMDatabaseFTS3WithModuleNameTests : FMDBTempDBTests + +@end + +static id<FMTokenizerDelegate> g_testTok = nil; + +@implementation FMDatabaseFTS3WithModuleNameTests + ++ (void)populateDatabase:(FMDatabase *)db +{ + [db executeUpdate:@"CREATE VIRTUAL TABLE mail USING fts3(subject, body)"]; + + [db executeUpdate:@"INSERT INTO mail VALUES('hello world', 'This message is a hello world message.')"]; + [db executeUpdate:@"INSERT INTO mail VALUES('urgent: serious', 'This mail is seen as a more serious mail')"]; + + // Create a tokenizer instance that will not be de-allocated when the method finishes. + g_testTok = [[FMSimpleTokenizer alloc] initWithLocale:NULL]; + [FMDatabase registerTokenizer:g_testTok]; +} + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testOffsets +{ + FMResultSet *results = [self.db executeQuery:@"SELECT offsets(mail) FROM mail WHERE mail MATCH 'world'"]; + + if ([results next]) { + FMTextOffsets *offsets = [results offsetsForColumnIndex:0]; + + [offsets enumerateWithBlock:^(NSInteger columnNumber, NSInteger termNumber, NSRange matchRange) { + if (columnNumber == 0) { + XCTAssertEqual(termNumber, 0L); + XCTAssertEqual(matchRange.location, 6UL); + XCTAssertEqual(matchRange.length, 5UL); + } else if (columnNumber == 1) { + XCTAssertEqual(termNumber, 0L); + XCTAssertEqual(matchRange.location, 24UL); + XCTAssertEqual(matchRange.length, 5UL); + } + }]; + } +} + +- (void)testTokenizer +{ + [self.db installTokenizerModuleWithName:@"TestModuleName"]; + + BOOL ok = [self.db executeUpdate:@"CREATE VIRTUAL TABLE simple_fts USING fts3(tokenize=TestModuleName)"]; + XCTAssertTrue(ok, @"Failed to create virtual table: %@", [self.db lastErrorMessage]); + + // The FMSimpleTokenizer handles non-ASCII characters well, since it's based on CFStringTokenizer. + NSString *text = @"I like the band Queensrÿche. They are really great."; + + ok = [self.db executeUpdate:@"INSERT INTO simple_fts VALUES(?)", text]; + XCTAssertTrue(ok, @"Failed to insert data: %@", [self.db lastErrorMessage]); + + FMResultSet *results = [self.db executeQuery:@"SELECT * FROM simple_fts WHERE simple_fts MATCH ?", @"Queensrÿche"]; + XCTAssertTrue([results next], @"Failed to find result"); +} + +@end diff --git a/fmdb.xcodeproj/project.pbxproj b/fmdb.xcodeproj/project.pbxproj index 6dc450f..6edb75d 100644 --- a/fmdb.xcodeproj/project.pbxproj +++ b/fmdb.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ CCC24EC20A13E34D00A6D3E3 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC24EBB0A13E34D00A6D3E3 /* FMDatabase.m */; }; CCC24EC50A13E34D00A6D3E3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC24EBE0A13E34D00A6D3E3 /* main.m */; }; CCC24EC70A13E34D00A6D3E3 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC24EC00A13E34D00A6D3E3 /* FMResultSet.m */; }; + D4A740A21A7046330058EBEE /* FMDatabaseFTS3WithModuleNameTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D4A740A11A7046330058EBEE /* FMDatabaseFTS3WithModuleNameTests.m */; }; EE42910512B42FBC0088BD94 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CC50F2CB0DF9183600E4AAAE /* FMDatabaseAdditions.m */; }; EE42910612B42FC30088BD94 /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CC50F2CC0DF9183600E4AAAE /* FMDatabaseAdditions.h */; }; EE42910712B42FC90088BD94 /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = CCC24EBA0A13E34D00A6D3E3 /* FMDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -133,6 +134,7 @@ CCC24EBE0A13E34D00A6D3E3 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = src/sample/main.m; sourceTree = SOURCE_ROOT; }; CCC24EBF0A13E34D00A6D3E3 /* FMResultSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FMResultSet.h; path = src/fmdb/FMResultSet.h; sourceTree = SOURCE_ROOT; }; CCC24EC00A13E34D00A6D3E3 /* FMResultSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FMResultSet.m; path = src/fmdb/FMResultSet.m; sourceTree = SOURCE_ROOT; }; + D4A740A11A7046330058EBEE /* FMDatabaseFTS3WithModuleNameTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FMDatabaseFTS3WithModuleNameTests.m; sourceTree = "<group>"; }; EE4290EF12B42F870088BD94 /* libFMDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFMDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; EE42910C12B42FFA0088BD94 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -297,6 +299,7 @@ children = ( BF940F5D18417DEA0001E077 /* FMDatabaseAdditionsTests.m */, 67CB1E2F19AD27D000A3CA7F /* FMDatabaseFTS3Tests.m */, + D4A740A11A7046330058EBEE /* FMDatabaseFTS3WithModuleNameTests.m */, BFE55E121841C9A000CB3A63 /* FMDatabasePoolTests.m */, BFE55E141841D38800CB3A63 /* FMDatabaseQueueTests.m */, BF5D042018416BB2008C5AA9 /* FMDatabaseTests.m */, @@ -514,6 +517,7 @@ 67CB1E3019AD27D000A3CA7F /* FMDatabaseFTS3Tests.m in Sources */, BFE55E131841C9A000CB3A63 /* FMDatabasePoolTests.m in Sources */, BFE55E151841D38800CB3A63 /* FMDatabaseQueueTests.m in Sources */, + D4A740A21A7046330058EBEE /* FMDatabaseFTS3WithModuleNameTests.m in Sources */, CCA66A2E19C0CB1900EFDAC1 /* FMDatabase+FTS3.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; |