mentat/sdks/swift/Mentat/MentatTests/MentatTests.swift
2018-04-09 16:15:00 +01:00

59 lines
2 KiB
Swift

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import XCTest
@testable import Mentat
class MentatTests: XCTestCase {
var schema: String?
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()
}
// test that a store can be opened in memory
func testOpenInMemoryStore() {
XCTAssertNotNil(Mentat().intoRaw())
}
// test that a store can be opened in a specific location
func testOpenStoreInLocation() {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsURL = paths[0]
let storeURI = documentsURL.appendingPathComponent("test.db", isDirectory: false).absoluteString
XCTAssertNotNil(Mentat(storeURI: storeURI).intoRaw())
}
func readSchema() throws -> String {
guard let schema = self.schema else {
let bundle = Bundle(for: type(of: self))
guard let schemaPath = bundle.path(forResource: "cities", ofType: "schema") else { return "" }
let schema = try String(contentsOf: URL(fileURLWithPath: schemaPath))
self.schema = schema
return schema
}
return schema
}
func testTransactVocabulary() {
do {
let vocab = try readSchema()
let mentat = Mentat()
let success = try mentat.transact(transaction: vocab)
assert( success )
} catch {
assertionFailure(error.localizedDescription)
}
}
// TODO: Add more tests once we are able to add vocabulary and transact entities
}