%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
Testable Code
1. 2017/07/07 17'22Testable Code - By cho
Page 1 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
;DRS@ D -NCD;DRS@ D -NCD;DRS@ D -NCD
HMFGT@ G@MF HMFGT@ G@MF LD BNLHMFGT@ G@MF HMFGT@ G@MF LD BNLHMFGT@ G@MF HMFGT@ G@MF LD BNL
2. 2017/07/07 17'22Testable Code - By cho
Page 2 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
MHS ;DRSMHS ;DRSMHS ;DRS
. - , - . , . -
. . .
!
3. 2017/07/07 17'22Testable Code - By cho
Page 3 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
G MHS ;DRSG MHS ;DRSG MHS ;DRS
HMCR O N DLR D@
@BH HS@SDR BG@MFD
, @G @G @G
; ; )
4. 2017/07/07 17'22Testable Code - By cho
Page 4 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
MHSMHSMHS
. ,
- -
,
- - , ,
. .
!
5. 2017/07/07 17'22Testable Code - By cho
Page 5 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
2N2N2N
,D TMBSHNM@
6. 2017/07/07 17'22Testable Code - By cho
Page 6 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
,D TMBSHNM@,D TMBSHNM@,D TMBSHNM@
- - , - -
, - -
!
7. 2017/07/07 17'22Testable Code - By cho
Page 7 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
T D TMBSHNMT D TMBSHNMT D TMBSHNM
, , , . , .
, - . , .
!
;GD ETMBSHNM @ @ R DU@ T@SDR SGD R@LD DRT S U@ TD
FHUDM SGD R@LD @ FTLDMS U@ TD R
/U@ T@SHNM NE SGD DRT S CNDR MNS B@TRD @M
RDL@MSHB@ N RD U@ D RHCD DEEDBS N NTSOTS RTBG @R
LTS@SHNM NE LTS@ D N IDBSR N NTSOTS SN 3 CDUHBDR
8. 2017/07/07 17'22Testable Code - By cho
Page 8 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D
/W@LO D
/W@LO D/W@LO D
class SomeDataModel {
func convertDate(date: NSDate) -> NSDate {
var returnDate = date
let closingDate = StringToDate(StoreModel.sharedInstance().closingDate)
if closingDate.hour >= 12 {
returnDate.day += 1
} else {
returnDate.day -= 1
}
return date
}
}
// Test
func testConvertDate() {
StoreModel.sharedInstance().closingDate = "0000"
XCTAssert(convertDate(date: someDate))
StoreModel.sharedInstance().closingDate = "1200"
XCTAssert(convertDate(date: someDate))
}
9. 2017/07/07 17'22Testable Code - By cho
Page 9 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
;HO N;HO N;HO N
; MNS SN DED DMBD HLOT D HMRS@MBD RS@SD; MNS SN DED DMBD HLOT D HMRS@MBD RS@SD; MNS SN DED DMBD HLOT D HMRS@MBD RS@SD
DSBDSBDSB
10. 2017/07/07 17'22Testable Code - By cho
Page 10 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D
/W@LO D
/W@LO D/W@LO D
class SomeDataModel {
func convertDate(date: NSDate, closingTime: NSDate) -> NSDate {
var returnDate = date
let closingDate = StringToDate(closingTime)
if closingDate.hour >= 12 {
returnDate.day += 1
} else {
returnDate.day -= 1
}
return date
}
}
// Test
func testConvertDate() {
XCTAssert(convertDate(date: someDate, "0000"))
XCTAssert(convertDate(date: someDate, "1200"))
}
11. 2017/07/07 17'22Testable Code - By cho
Page 11 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
struct SomeState {
var current: Int
}
class SomeDataModel {
var state = SomeState(current: 0)
func step001() {
guard state.current == 0 else { fatalError() }
// do some thing
state.current = 1
}
func step002() {
guard state.current == 1 else { fatalError() }
// do some thing
state.current = 2
}
}
// Test
func testStep002() {
let model = SomeDataModel()
model.step001()
12. 2017/07/07 17'22Testable Code - By cho
Page 12 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
;HO N
;HO N
;HO N;HO N
HSD BNLONR@ D BNCD
HSD BNLONR@ D BNCD
HSD BNLONR@ D BNCDHSD BNLONR@ D BNCD
13. 2017/07/07 17'22Testable Code - By cho
Page 13 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D
@MC ON D ET@MC ON D ET@MC ON D ET
14. 2017/07/07 17'22Testable Code - By cho
Page 14 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D
@MC ON D ET@MC ON D ET@MC ON D ET
# Unix Commands
# recovery all deleted files in git
$ git status | grep delete | cut -d: -f2 | xargs git checkout
15. 2017/07/07 17'22Testable Code - By cho
Page 15 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D-NLONRHSHNM L@ DR SGHMFR ZDWH D
@MC ON D ET@MC ON D ET@MC ON D ET
# GStreamer
protocol > source > format > codec > filter > sink
http alsa mp4 mp3 mixer alsa
ftp v4l2 ogg mpeg4 effect file
file mic avi h263 ... xvideo
... ... ... ... …
16. 2017/07/07 17'22Testable Code - By cho
Page 16 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
struct SomeState {
let current: Int
}
class SomeDataModel {
var state = SomeState(current: 0)
func step001(state: SomeState) -> SomeState {
guard state.current == 0 else { fatalError() }
// do some thing
return SomeState(state: 1)
}
func step002(state: SomeState) -> SomeState {
guard state.current == 1 else { fatalError() }
// do some thing
return SomeState(state: 2)
}
}
// Test
func testStep002() {
let model = SomeDataModel()
let state = model.step002(state: SomeState(current: 1))
17. 2017/07/07 17'22Testable Code - By cho
Page 17 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
;HO N;HO N;HO N
: 3.: 3.: 3.
: :HMF D DRONMRH H HS HMBHO D
ODM - NRDC HMBHO D
HR NU :T RSHSTSHNM HMBHO D
3 3MSD E@BD :DF DF@SHNM HMBHO D
. .DODMCDMB 3MUD RHNM HMBHO D
18. 2017/07/07 17'22Testable Code - By cho
Page 18 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
:::
:HMF D DRONMRH HS HMBHO D:HMF D DRONMRH HS HMBHO D:HMF D DRONMRH HS HMBHO D
. - .
. . - , . ,
. , . .
.
!
19. 2017/07/07 17'22Testable Code - By cho
Page 19 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D/W@LO D/W@LO D
func foo(completion: (error: NSError?) -> Void) {
var sent = false
for _ in 0..<5 {
sent = checkDataSent()
if sent {
break
}
sleep(1)
}
if sent {
doSomethingReallyWantTo(completion)
} else {
completion(error: NSError(domain: "error domain", code: 1, userInfo: nil))
}
}
20. 2017/07/07 17'22Testable Code - By cho
Page 20 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D
/W@LO D
/W@LO D/W@LO D
func untilDataSent(completion: (sent: Bool) -> Void) {
var sent = false
for _ in 0..<5 {
sent = checkDataSent()
if sent {
break
}
sleep(1)
}
completion(sent: sent)
}
func foo(completion: (error: NSError?) -> Void) {
untilDataSent { sent in
if sent {
doSomethingReallyWantTo(completion)
} else {
completion(error: NSError(domain: "error domain", code: 1, userInfo: nil))
}
}
}
21. 2017/07/07 17'22Testable Code - By cho
Page 21 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D
/W@LO D
/W@LO D/W@LO D
func untilDataSent(completion: (sent: Bool) -> Void) {
…
}
func foo(until: (completion: (sent: Bool) -> Void) -> Void, completion: (error: NSError?) ->
until { sent in
if sent {
doSomethingReallyWantTo(error: nil)
} else {
completion(error: NSError(domain: "error domain", code: 1, userInfo: nil))
}
}
}
// Test
func testFoo() {
expectationWithDescription(@"expectation")
foo ({ $0(sent: true }) { error in XCTAssertNil(error) }
foo ({ $0(sent: false }) { error in XCTAssertNil(error) }
waitForExpectationsWithTimeout(1, handler: nil)
}
22. 2017/07/07 17'22Testable Code - By cho
Page 22 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
;HOR;HOR;HOR
; MNS SN DED DMBD HLOT D HMRS@MBD RS@SD DSB
HSD BNLONR@ D BNCD
:
23. 2017/07/07 17'22Testable Code - By cho
Page 23 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
,@C :LD R,@C :LD R,@C :LD R
:HCD DEEDBSR
1 N @ :S@SD
:HMF DSNM
.DODMCDMB
NMF ETMBSHNM
@ D N IDBSR HM BNMRS TBSN
D @ MN @UNHCHMF F N @ U@ H@ D TS DSSHMF
RHMF DSNM Z HMF @ NUD NT BNCD
24. 2017/07/07 17'22Testable Code - By cho
Page 24 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
@ D N IDBSR HM BNMRS TBSN@ D N IDBSR HM BNMRS TBSN@ D N IDBSR HM BNMRS TBSN
class A { }
class B {
var a: A?
init() {
a = A()
}
}
25. 2017/07/07 17'22Testable Code - By cho
Page 25 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
@ D N IDBSR HM BNMRS TBSN@ D N IDBSR HM BNMRS TBSN@ D N IDBSR HM BNMRS TBSN
class A { }
class B {
var a: A?
init(a: A) {
self.a = a
}
}
// Test
func testB() {
let b = B(a: TestableA())
}
26. 2017/07/07 17'22Testable Code - By cho
Page 26 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
:NLD ;DBGMHPTDR:NLD ;DBGMHPTDR:NLD ;DBGMHPTDR
27. 2017/07/07 17'22Testable Code - By cho
Page 27 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
NB :ST DSBNB :ST DSBNB :ST DSB
28. 2017/07/07 17'22Testable Code - By cho
Page 28 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
UD HCDUD HCDUD HCD
29. 2017/07/07 17'22Testable Code - By cho
Page 29 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D/W@LO D/W@LO D
class PrinterManager {
func printSomething(str: String) {
let printer = Printer(name: NSUserDefaults.standardUserDefaults().stringForKey("Current P
printer.printString(str)
}
}
30. 2017/07/07 17'22Testable Code - By cho
Page 30 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/W@LO D/W@LO D/W@LO D
class PrinterManager {
func printSomething(str: String) {
currentPrinter.printString(str)
}
func currentPrinter() -> Printer {
return Printer(name: NSUserDefaults.standardUserDefaults().stringForKey("Current Printer"
}
}
class TestablePrinterManager: PrinterManager {
override func currentPrinter() -> Printer {
return TestPrinter()
}
}
31. 2017/07/07 17'22Testable Code - By cho
Page 31 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
:D@L:D@L:D@L
. . -
. - .
!
32. 2017/07/07 17'22Testable Code - By cho
Page 32 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
/M@ HMF NHMS/M@ HMF NHMS/M@ HMF NHMS
. - . .
. .
!
33. 2017/07/07 17'22Testable Code - By cho
Page 33 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
.DODMCDMB 3MIDBSHNM.DODMCDMB 3MIDBSHNM.DODMCDMB 3MIDBSHNM
class SomeModel {
var identifier: String!
func doSomething() {
let store = CommonStore.sharedInstance()
self.identifier = store.createSomething()
}
}
34. 2017/07/07 17'22Testable Code - By cho
Page 34 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
.DODMCDMB 3MIDBSHNM
.DODMCDMB 3MIDBSHNM
.DODMCDMB 3MIDBSHNM.DODMCDMB 3MIDBSHNM
class AppFactory {
func register(object: AnyObject, type: AnyType) { }
func get(type: AnyType) -> AnyObject { }
}
class SomeModel {
var identifier: String!
func doSomething() {
let store = AppFactory.sharedInstance().store()
self.identifier = store.createSomething()
}
}
func test() {
AppFactory.sharedInstance().register(MockStore(), type: CommonStore.self)
// test from here
}
35. 2017/07/07 17'22Testable Code - By cho
Page 35 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
G@S L@ DR @ FNNC TMHS SDRSG@S L@ DR @ FNNC TMHS SDRSG@S L@ DR @ FNNC TMHS SDRS
D@C@ D
- D@M
2HFG BNUD @FD
-NUD R NTMC U@ TD
-NUD R HMU@ HC U@ TD
36. 2017/07/07 17'22Testable Code - By cho
Page 36 of 36http://10.17.244.123'8080/md/TestableCode.md?print=1
DED DMBDRDED DMBDRDED DMBDR
HSHMF ;DRS@ D -NCD
: 3.
GSSO( LHR N GDUD BNL BNCD DUHD D R FTHCD
GSSOR( DM H HODCH@ N F H H : 3.? N IDBS
N HDMSDC?CDRHFM