Skip to content

Commit f29212f

Browse files
add init generator test
1 parent 20e826a commit f29212f

File tree

6 files changed

+134
-3
lines changed

6 files changed

+134
-3
lines changed

CodeGenerator.xcodeproj/project.pbxproj

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
A01E46951E1030E000395AED /* VarSignatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01E46941E1030E000395AED /* VarSignatureTests.swift */; };
2424
A01E46961E10313E00395AED /* VarSignature.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01E46921E102CBB00395AED /* VarSignature.swift */; };
2525
A01E46A01E105EE900395AED /* FuncMocker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01E469F1E105EE900395AED /* FuncMocker.swift */; };
26+
A031BD391E8D1126003235D5 /* GenerateInitCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = A031BD381E8D1126003235D5 /* GenerateInitCommand.swift */; };
27+
A031BD3B1E8D11D6003235D5 /* InitGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A031BD3A1E8D11D6003235D5 /* InitGenerator.swift */; };
28+
A031BD3E1E8D187C003235D5 /* GeneratedInit.txt in Resources */ = {isa = PBXBuildFile; fileRef = A031BD3D1E8D187C003235D5 /* GeneratedInit.txt */; };
29+
A031BD401E8D191E003235D5 /* InitGeneratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A031BD3F1E8D191E003235D5 /* InitGeneratorTests.swift */; };
30+
A031BD411E8D19E9003235D5 /* InitGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A031BD3A1E8D11D6003235D5 /* InitGenerator.swift */; };
2631
A039205D1E0F3A7B005A6E89 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A039205C1E0F3A7B005A6E89 /* AppDelegate.swift */; };
2732
A039205F1E0F3A7B005A6E89 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A039205E1E0F3A7B005A6E89 /* ViewController.swift */; };
2833
A03920611E0F3A7B005A6E89 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A03920601E0F3A7B005A6E89 /* Assets.xcassets */; };
@@ -117,6 +122,10 @@
117122
A01E46921E102CBB00395AED /* VarSignature.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VarSignature.swift; sourceTree = "<group>"; };
118123
A01E46941E1030E000395AED /* VarSignatureTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VarSignatureTests.swift; sourceTree = "<group>"; };
119124
A01E469F1E105EE900395AED /* FuncMocker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FuncMocker.swift; sourceTree = "<group>"; };
125+
A031BD381E8D1126003235D5 /* GenerateInitCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateInitCommand.swift; sourceTree = "<group>"; };
126+
A031BD3A1E8D11D6003235D5 /* InitGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitGenerator.swift; sourceTree = "<group>"; };
127+
A031BD3D1E8D187C003235D5 /* GeneratedInit.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GeneratedInit.txt; sourceTree = "<group>"; };
128+
A031BD3F1E8D191E003235D5 /* InitGeneratorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitGeneratorTests.swift; sourceTree = "<group>"; };
120129
A03920591E0F3A7B005A6E89 /* CodeGenerator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodeGenerator.app; sourceTree = BUILT_PRODUCTS_DIR; };
121130
A039205C1E0F3A7B005A6E89 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
122131
A039205E1E0F3A7B005A6E89 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -263,12 +272,14 @@
263272
A0A82AEE1E11676B00F27EA3 /* SwiftTypeTests.swift */,
264273
A0636FD51E1299100008CE98 /* EquatableGeneratorTests.swift */,
265274
A0A02CC61E1A6868001900DC /* HashableGeneratorTest.swift */,
275+
A031BD3F1E8D191E003235D5 /* InitGeneratorTests.swift */,
266276
A0A82AEA1E1159C200F27EA3 /* NSObject+file.swift */,
267277
A0A82AE61E11571200F27EA3 /* interface1.txt */,
268278
A0A82AE81E11593800F27EA3 /* interface1Mock.txt */,
269279
A03920701E0F3A7B005A6E89 /* Info.plist */,
270280
A0636FD71E12997C0008CE98 /* EquatableClazz.txt */,
271281
A0636FD91E1299A80008CE98 /* GeneratedEquals.txt */,
282+
A031BD3D1E8D187C003235D5 /* GeneratedInit.txt */,
272283
A0A02CC81E1A68D8001900DC /* GeneratedHash.txt */,
273284
A04453D21E156A080063CB99 /* funcMock.txt */,
274285
);
@@ -286,11 +297,12 @@
286297
A03920811E0F3A8B005A6E89 /* Generate... */ = {
287298
isa = PBXGroup;
288299
children = (
289-
A0636FD21E12944B0008CE98 /* Equatable */,
300+
A0636FD21E12944B0008CE98 /* Generator */,
290301
A01E469E1E105EB400395AED /* Mocker */,
291302
A01E46881E0FF95900395AED /* Source */,
292303
A03920841E0F3A8B005A6E89 /* SourceEditorExtension.swift */,
293304
A0A02CD11E1A7236001900DC /* GenerateEquatableCommand.swift */,
305+
A031BD381E8D1126003235D5 /* GenerateInitCommand.swift */,
294306
A0A02CD41E1A739A001900DC /* GenerateHashableCommand.swift */,
295307
A0A02CCE1E1A6DE3001900DC /* SelectableGeneratorCommand.swift */,
296308
A03920861E0F3A8B005A6E89 /* GenerateMockCommand.swift */,
@@ -309,14 +321,15 @@
309321
name = "Supporting Files";
310322
sourceTree = "<group>";
311323
};
312-
A0636FD21E12944B0008CE98 /* Equatable */ = {
324+
A0636FD21E12944B0008CE98 /* Generator */ = {
313325
isa = PBXGroup;
314326
children = (
315327
A0A02CC21E1A60EA001900DC /* Generator.swift */,
316328
A0636FD31E1294650008CE98 /* EquatableGenerator.swift */,
317329
A0A02CC41E1A616C001900DC /* HashableGenerator.swift */,
330+
A031BD3A1E8D11D6003235D5 /* InitGenerator.swift */,
318331
);
319-
name = Equatable;
332+
name = Generator;
320333
sourceTree = "<group>";
321334
};
322335
/* End PBXGroup section */
@@ -443,6 +456,7 @@
443456
A0636FDA1E1299A80008CE98 /* GeneratedEquals.txt in Resources */,
444457
A0A82AE71E11571200F27EA3 /* interface1.txt in Resources */,
445458
A0636FD81E12997C0008CE98 /* EquatableClazz.txt in Resources */,
459+
A031BD3E1E8D187C003235D5 /* GeneratedInit.txt in Resources */,
446460
A04453D31E156A080063CB99 /* funcMock.txt in Resources */,
447461
);
448462
runOnlyForDeploymentPostprocessing = 0;
@@ -474,6 +488,7 @@
474488
A04453D11E1567EE0063CB99 /* ClosureParamMocker.swift in Sources */,
475489
A08C585B1E13C5AA00034B76 /* ClosureType.swift in Sources */,
476490
A0E276541E13F1FC003CC557 /* TypeParser.swift in Sources */,
491+
A031BD411E8D19E9003235D5 /* InitGenerator.swift in Sources */,
477492
A07FE2791E107AA900809837 /* InterfaceMocker.swift in Sources */,
478493
A0A82B1D1E127F1000F27EA3 /* AccessLevel.swift in Sources */,
479494
A08C585E1E13CB8300034B76 /* SwiftType.swift in Sources */,
@@ -498,6 +513,7 @@
498513
A07FE2771E106CFE00809837 /* FuncMockTests.swift in Sources */,
499514
A0A82AEB1E1159C200F27EA3 /* NSObject+file.swift in Sources */,
500515
A07FE2821E108D6900809837 /* InterfaceMockerTests.swift in Sources */,
516+
A031BD401E8D191E003235D5 /* InitGeneratorTests.swift in Sources */,
501517
A039206F1E0F3A7B005A6E89 /* CodeGeneratorTests.swift in Sources */,
502518
A0A82B1C1E127E9F00F27EA3 /* AccessLevelTests.swift in Sources */,
503519
);
@@ -511,12 +527,14 @@
511527
A03920851E0F3A8B005A6E89 /* SourceEditorExtension.swift in Sources */,
512528
A0E2766B1E156738003CC557 /* ClosureParamMocker.swift in Sources */,
513529
A0A02CD31E1A7236001900DC /* GenerateEquatableCommand.swift in Sources */,
530+
A031BD391E8D1126003235D5 /* GenerateInitCommand.swift in Sources */,
514531
A0A02CD01E1A6DE3001900DC /* SelectableGeneratorCommand.swift in Sources */,
515532
A08C585F1E13CB8300034B76 /* SwiftType.swift in Sources */,
516533
A01E46851E0FF94100395AED /* InterfaceDefinition.swift in Sources */,
517534
A01E46A01E105EE900395AED /* FuncMocker.swift in Sources */,
518535
A03920911E0F3AEF005A6E89 /* String+regexr.swift in Sources */,
519536
A08C585C1E13C5AA00034B76 /* ClosureType.swift in Sources */,
537+
A031BD3B1E8D11D6003235D5 /* InitGenerator.swift in Sources */,
520538
A0A82B1A1E127BEE00F27EA3 /* AccessLevel.swift in Sources */,
521539
A01E46871E0FF94C00395AED /* FuncSignature.swift in Sources */,
522540
A0E276591E141ED8003CC557 /* SwiftParamMocker.swift in Sources */,

CodeGeneratorTests/EquatableClazz.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,10 @@ class EquatableClazz {
22
var var0: Int!
33
let var1: String
44
var var2: Bool?
5+
6+
init(var0: Int?, var1: String, var2: Bool?) {
7+
self.var0 = var0
8+
self.var1 = var1
9+
self.var2 = var2
10+
}
511
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class EquatableClazz {
2+
var var0: Int!
3+
let var1: String
4+
var var2: Bool?
5+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// InitGeneratorTests.swift
3+
// CodeGenerator
4+
//
5+
// Created by WANG Jie on 30/03/2017.
6+
// Copyright © 2017 wangjie. All rights reserved.
7+
//
8+
9+
import XCTest
10+
@testable import CodeGenerator
11+
12+
class InitGeneratorTests: XCTestCase {
13+
14+
override func setUp() {
15+
super.setUp()
16+
// Put setup code here. This method is called before the invocation of each test method in the class.
17+
}
18+
19+
override func tearDown() {
20+
// Put teardown code here. This method is called after the invocation of each test method in the class.
21+
super.tearDown()
22+
}
23+
24+
func testInitGenerator() {
25+
let source = string(from: "EquatableClazz", ofType: "txt")
26+
let interface = InterfaceSignature(interfaceSource: source, lines: source.components(separatedBy: "\n"))
27+
let initGenerator = InitGenerator(interfaceSignature: interface, indentation: " ")
28+
29+
var expectedHashSource = string(from: "GeneratedInit", ofType: "txt").components(separatedBy: "\n")
30+
expectedHashSource.removeLast()
31+
32+
XCTAssertEqual(initGenerator.lines.count, expectedHashSource.count)
33+
let count = min(initGenerator.lines.count, expectedHashSource.count)
34+
for i in 0..<count {
35+
XCTAssertEqual(initGenerator.lines[i], expectedHashSource[i])
36+
}
37+
}
38+
39+
40+
41+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// GenerateInitCommand.swift
3+
// CodeGenerator
4+
//
5+
// Created by WANG Jie on 30/03/2017.
6+
// Copyright © 2017 wangjie. All rights reserved.
7+
//
8+
9+
import Foundation
10+
import XcodeKit
11+
12+
//class GenerateInitCommand: NSObject, SelectableGeneratorCommand {
13+
// func generator(with invocation: XCSourceEditorCommandInvocation, selections: [XCSourceTextRange]) -> Generator {
14+
//
15+
// }
16+
//
17+
// func generator(with invocation: XCSourceEditorCommandInvocation) -> Generator {
18+
//
19+
// }
20+
//
21+
// func swiftPerform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void) {
22+
//
23+
// }
24+
//}

Generate.../InitGenerator.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
// InitGenerator.swift
3+
// CodeGenerator
4+
//
5+
// Created by WANG Jie on 30/03/2017.
6+
// Copyright © 2017 wangjie. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
struct InitGenerator: Generator {
12+
let varSignatures: [VarSignature]
13+
let indentation: String
14+
let interfaceDefinition: InterfaceDefinition
15+
16+
var interfaceName: String {
17+
return interfaceDefinition.name
18+
}
19+
20+
init(interfaceSignature: InterfaceSignature, indentation: String) {
21+
self.varSignatures = interfaceSignature.varSignatures
22+
self.interfaceDefinition = interfaceSignature.definition
23+
self.indentation = indentation
24+
}
25+
26+
init(interfaceDefinition: InterfaceDefinition, varSignatures: [VarSignature], indentation: String) {
27+
self.varSignatures = varSignatures
28+
self.interfaceDefinition = interfaceDefinition
29+
self.indentation = indentation
30+
}
31+
32+
var lines: [String] {
33+
var lines = [String]()
34+
35+
return lines
36+
}
37+
}

0 commit comments

Comments
 (0)