-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcg
47 lines (42 loc) · 1.99 KB
/
cg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#https://gist.github.com/NikitaKozlov/ff9d8e65d9d880a2f35e1cac58a84990
import sys, os, shutil
def generateClass(directory, classNumber, methodsPerClass, mainPackage):
className = "Foo" + str(classNumber)
filePath = os.path.join(directory, className + ".java")
with open(filePath,"w+") as f:
f.write("package " + mainPackage + "." + directory + ";\n")
f.write("public class " + className + " {\n")
for i in xrange(0, methodsPerClass):
f.write("public void foo" + str(i) + "(){\n")
if i > 0:
f.write("foo" + str(i-1) + "();\n")
elif classNumber > 0:
f.write("new Foo" + str(classNumber-1) + "().foo" + str(methodsPerClass-1) + "();\n")
f.write("}\n")
f.write("}")
def generatePackage(packageNumber, classCounter, methodsPerClass, mainPackage):
packageName = "package_" + str(packageNumber)
if not os.path.exists(packageName):
os.makedirs(packageName)
else:
shutil.rmtree(packageName)
for i in xrange(0, classCounter):
generateClass(packageName, i, methodsPerClass, mainPackage)
"""
4 parameters to specify:
mainPackage - directory where generator should put all generated packages
packageCounter - how many packages should be generated
classCounter - how many classes should be generated in each package
methodCounter - how many method should be generated all together (!!!)
"""
if len(sys.argv) < 5:
print "Not enough arguments. Expected 5 arguments. But provided only ", len(sys.argv)
else:
mainPackage = sys.argv[1]
packageCounter = int(sys.argv[2])
classCounter = int(sys.argv[3])
methodCounter = int(sys.argv[4])
methodsPerClass = methodCounter / (classCounter * packageCounter)
print packageCounter, ' packages, ', classCounter, ' classes, ', methodCounter, ' methods, ', methodsPerClass, " methods per class"
for i in xrange(0, packageCounter):
generatePackage(i, classCounter, methodsPerClass, mainPackage)