Skip to content

Instantly share code, notes, and snippets.

View ktanaka117's full-sized avatar

Tanaka Kenji ktanaka117

View GitHub Profile
import Foundation
class TestDataHelper {
// 使い方
// let agreement: Agreement = TestDataHelper.testData(forResource: "Some", ofType: "json")
static func testData<T: Decodable>(forResource resource: String, ofType type: String) -> T {
let url = Bundle(for: TestDataHelper.self).url(forResource: resource, withExtension: type)!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
@ktanaka117
ktanaka117 / AsyncAwait.swift
Created August 31, 2018 09:25
なんかasync/awaitの中でthread指定したい
// TODO: async/await実装したい
// TODO: ストリームの中でthread指定したい
protocol Awaitable {
associatedtype Value
// なんかDispatchQueueを返すメソッド...?
}
typealias CompletionHandler<T> = ((T) -> Awaitable<T>)
@ktanaka117
ktanaka117 / FizzBuzzTDD.swift
Created May 28, 2018 17:14
ペアプロTDDを楽しむ会 in DarkでやったFizzBuzzのお題。
// FizzBuzzTests.swift
import XCTest
@testable import FizzBuzz
class FizzBuzzTests: XCTestCase {
func test数字を渡すとnumberを返す() {
XCTContext.runActivity(named: "2を渡した場合") { _ in
let fizzBuzz = FizzBuzz(2)
XCTContext.runActivity(named: "number(2)を返す") { _ in
@ktanaka117
ktanaka117 / CodePiece.swift
Created May 28, 2018 07:12
こういうのやろうと思ったんだけど、deleteした後のfavoriteListObjectは[invalid object]的なサムシングになるんだね。 #CodePiece
do {
let realm = try Realm()
let favoriteListObjects = realm.objects(FavoriteListObject.self).filter("id like '\(id)'")
guard let favoriteListObject = favoriteListObjects.first else {
completion(.failure(FavoriteListDataStoreError.deleteError))
return
}
try realm.write() {
@ktanaka117
ktanaka117 / CodePiece.swift
Created May 17, 2018 15:56
XCTContext.runActivityのラッパー #CodePiece
func context(named: String, block: (XCTActivity) throws -> (XCTWaiter.Result)) rethrows {
_ = try XCTContext.runActivity(named: named, block: block)
}
class FavoriteListDataStoreTests: XCTestCase {
func testSaveFavoriteList() {
context(named: "") { activity -> XCTWaiter.Result in
return .completed
}
}
@ktanaka117
ktanaka117 / Equatablity.swift
Last active April 30, 2018 07:05
==と===に関する同値と同一の確認。UIViewはクラスなはずなのに、==が使えるのはなぜかと、===が何を同一としているのかを調べてみた。
// 参考・関連
// https://qiita.com/omochimetaru/items/2aa00c7cb0eef4e57999
// https://qiita.com/omochimetaru/items/c95e0d36ae7f1b1a9052
// https://stackoverflow.com/questions/24938503/nsobject-is-hashable-but-a-protocol-that-adopts-nsobject-is-not
// https://developer.apple.com/documentation/swift/1538988
import Foundation
class Hoge {}
@ktanaka117
ktanaka117 / CodePiece.swift
Created April 17, 2018 18:30
お客様の中に、このコードブロックが起こすRe:VIEWのシンタックスエラーを解決できる方はおられませんか #CodePiece #技術書典
//emlist{
func testCardEqual() {
XCTAssertEqual(
Card(rank: .jack, suit: .club),
Card(rank: .jack, suit: .club)
)
XCTAssertNotEqual(
Card(rank: .queen, suit: .diamond),
Card(rank: .jack, suit: .club)
)
@ktanaka117
ktanaka117 / CodePiece.swift
Created March 28, 2018 16:52
disposeしたら通信をキャンセルするサンプル #CodePiece
let single = Single<Void>.create { singleEvent in
let req = Alamofire.request("https://www.google.co.jp/")
req.response { response in
print("通信完了")
}
return Disposables.create(with: {
print("通信キャンセル") // <- こっちが出た
req.cancel()
})
@ktanaka117
ktanaka117 / CodePiece.swift
Created March 1, 2018 01:49
_ #love_swift #CodePiece
func number() -> Int {
var x: Int
x = 1
return x
}
func number() -> Int {
return 1
}
@ktanaka117
ktanaka117 / CodePiece.swift
Created March 1, 2018 01:45
_ #CodePiece #tryswiftconf
func number() -> Int {
let x: Int
x = 1
return x
}
func number() -> Int {
return 1
}