Commit 4e32a0a3c697108c6d992f23134543ce0cd780b6

siiretty copy-paste koodia aliohjelmiksi, lisätty teksti kun kaaviossa ei virheitä, lisätty testejä, seuraavaksi korjattava se että ulostulo on jätetty kytkemättä
koe6_2.txt
(22 / 0)
  
1{
2 "devices":[
3 {"type":"DC","id":"dev0","x":56,"y":144,"label":"DC"},
4 {"type":"Toggle","id":"dev1","x":160,"y":72,"label":"a"},
5 {"type":"Toggle","id":"dev2","x":160,"y":144,"label":"sel"},
6 {"type":"LED","id":"dev3","x":576,"y":72,"label":"Keltainen","color":"#ffff00"},
7 {"type":"LED","id":"dev4","x":576,"y":144,"label":"Sininen","color":"#0000ff"},
8 {"type":"AND","id":"dev5","x":344,"y":40,"label":"AND"},
9 {"type":"NOT","id":"dev6","x":264,"y":192,"label":"NOT"},
10 {"type":"AND","id":"dev7","x":352,"y":160,"label":"AND"}
11 ],
12 "connectors":[
13 {"from":"dev1.in0","to":"dev0.out0"},
14 {"from":"dev2.in0","to":"dev0.out0"},
15 {"from":"dev4.in0","to":"dev5.out0"},
16 {"from":"dev5.in0","to":"dev1.out0"},
17 {"from":"dev5.in1","to":"dev2.out0"},
18 {"from":"dev6.in0","to":"dev2.out0"},
19 {"from":"dev7.in0","to":"dev1.out0"},
20 {"from":"dev7.in1","to":"dev6.out0"}
21 ]
22}
simcirtest.py
(9 / 13)
  
398398 oikeataulu = totuustaulu_kaaviosta(json.loads(oikeakaavio))
399399 # print testitaulu
400400 # print oikeataulu
401 virheita, virherivit = testaa_totuustaulut(testitaulu, oikeataulu)
402 # Lisätään muuttujat ja output virheellisten rivien yläpuolelle
403 virheet = ' ' + oikeataulu.splitlines()[0] + '\n' + virherivit
401 return onko_virheita(testitaulu, oikeataulu)
404402
405 return virheita, virheet
406403
407
408404def testaa_lauseke_vs_kaavio(testikaavio, oikealauseke):
409405 '''
410406 Parametrien pitää olla
414414 oikeataulu = totuustaulu_lausekkeesta(oikealauseke)
415415 # print testitaulu
416416 # print oikeataulu
417 virheita, virherivit = testaa_totuustaulut(testitaulu, oikeataulu)
418 # Lisätään muuttujat ja output virheellisten rivien yläpuolelle
419 virheet = ' ' + oikeataulu.splitlines()[0] + '\n' + virherivit
417 return onko_virheita(testitaulu, oikeataulu)
420418
421 return virheita, virheet
422
423
424419def totuustaulu_muotoilu(totuustaulu):
425420 '''
426421 muotoillaan totuustaulu samaan muotoon kuin lausekkeesta muotoiltu totuustaulu
467467 testitaulu = totuustaulu_kaaviosta(json.loads(testikaavio))
468468 # print testitaulu
469469 # print oikeataulu
470 return onko_virheita(testitaulu, oikeataulu)
471
472 #return virheita, virheet
473
474def onko_virheita(testitaulu, oikeataulu):
470475 virheita, virherivit = testaa_totuustaulut(testitaulu, oikeataulu)
476 if virheita == 0:
477 return 0, "Oikein, täydet pisteet!\n"
471478 # Lisätään muuttujat ja output virheellisten rivien yläpuolelle
472479 virheet = ' ' + oikeataulu.splitlines()[0] + '\n' + virherivit
473
474480 return virheita, virheet
475
476481
477482if __name__ == '__main__':
478483 import sys
testit.py
(27 / 35)
  
11import sys
22import simcirtest
33
4data = open('koe6.txt', 'r').read()
5oikeadata = open('k6.txt', 'r').read()
4def testit(otsikko, data, oikeadata, oikealauseke, oikeataulu):
5 sys.stdout.write(otsikko + '\n')
6 sys.stdout.write('Kaavio vs. kaavio\n')
7 v1, v2 = simcirtest.testaa_kaaviot(data, oikeadata)
8 sys.stdout.write(v2)
9 sys.stdout.write('Virheet: ' + str(v1) + '\n\n')
610
7sys.stdout.write('Testi: Sininen ja Keltainen LED\n')
8sys.stdout.write('Kaavio vs. kaavio\n')
9v1, v2 = simcirtest.testaa_kaaviot(data, oikeadata)
10sys.stdout.write(v2)
11sys.stdout.write('Virheet: ' + str(v1) + '\n\n')
11 sys.stdout.write('Lauseke vs. kaavio\n')
12 v3, v4 = simcirtest.testaa_lauseke_vs_kaavio(data, oikealauseke)
13 sys.stdout.write(v4)
14 sys.stdout.write('Virheet: ' + str(v3) + '\n\n')
1215
13oikealauseke = ["Keltainen = AND(a,NOT(sel))", "Sininen = AND(a,sel)"]
16 sys.stdout.write('Totuustaulu vs. kaavio\n')
17 v5, v6 = simcirtest.testaa_totuustaulu_vs_kaavio(data, oikeataulu)
18 sys.stdout.write(v6)
19 sys.stdout.write('Virheet: ' + str(v5) + '\n\n')
1420
15sys.stdout.write('Lauseke vs. kaavio\n')
16v3, v4 = simcirtest.testaa_lauseke_vs_kaavio(data, oikealauseke)
17sys.stdout.write(v4)
18sys.stdout.write('Virheet: ' + str(v3) + '\n\n')
1921
20
22otsikko = 'Testi: Sininen ja Keltainen LED (kaavio oikein)'
23data = open('k6.txt', 'r').read()
24oikeadata = open('k6.txt', 'r').read()
25oikealauseke = ["Keltainen = AND(a,NOT(sel))", "Sininen = AND(a,sel)"]
2126oikeataulu = """
2227 a sel Keltainen Sininen
2328 - --- --- -
3232 1 1 0 1
3333"""
3434
35sys.stdout.write('Totuustaulu vs. kaavio\n')
36v5, v6 = simcirtest.testaa_totuustaulu_vs_kaavio(data, oikeataulu)
37sys.stdout.write(v6)
38sys.stdout.write('Virheet: ' + str(v5) + '\n\n')
35testit(otsikko, data, oikeadata, oikealauseke, oikeataulu)
3936
37otsikko = 'Testi: Sininen ja Keltainen LED (kaaviossa virhe)'
38data = open('koe6.txt', 'r').read()
39testit(otsikko, data, oikeadata, oikealauseke, oikeataulu)
4040
41sys.stdout.write('Testi: A1,A1,A2,A3 ja B1,B1,B2,B3 yhtäsuuruus, monimutkainen versio, jossa kaikki portit (koe8.txt yksi ENOR vaihdettu NOR:ksi)\n')
41otsikko = 'Testi: Sininen ja Keltainen LED (Keltainen LED kytkemättä)'
42data = open('koe6_2.txt', 'r').read()
43testit(otsikko, data, oikeadata, oikealauseke, oikeataulu)
4244
45otsikko = 'Testi: A1,A1,A2,A3 ja B1,B1,B2,B3 yhtäsuuruus, monimutkainen versio, jossa kaikki portit (koe8.txt yksi ENOR vaihdettu NOR:ksi)'
4346data = open('koe8.txt', 'r').read()
4447oikeadata = open('k8.txt', 'r').read()
45
46sys.stdout.write('Kaavio vs. kaavio\n')
47v1, v2 = simcirtest.testaa_kaaviot(data, oikeadata)
48sys.stdout.write(v2)
49sys.stdout.write('Virheet: ' + str(v1) + '\n\n')
50
5148oikealauseke = ["LED = AND(AND(ENOR(OR(NOT(ENOR(EOR(NOR(NAND(NOT(DC), NOT(DC)), NAND(NOT(DC), NOT(DC))), NOR(NAND(NOT(DC), NOT(DC)), NAND(NOT(DC), NOT(DC)))), EOR(NOR(NAND(NOT(DC), NOT(DC)), NAND(NOT(DC), NOT(DC))), NOR(NAND(NOT(DC), NOT(DC)), NAND(NOT(DC), NOT(DC)))))), A1), B1), ENOR(A2, B2)), AND(ENOR(A3, B3), ENOR(A4, B4)))"]
52
53sys.stdout.write('Lauseke vs. kaavio\n')
54v3, v4 = simcirtest.testaa_lauseke_vs_kaavio(data, oikealauseke)
55sys.stdout.write(v4)
56sys.stdout.write('Virheet: ' + str(v3) + '\n\n')
57
58
5949oikeataulu = """
6050A1 A2 A3 A4 B1 B2 B3 B4 LED
61510 0 0 0 0 0 0 0 1
3063061 1 1 1 1 1 1 1 1
307307"""
308308
309sys.stdout.write('Totuustaulu vs. kaavio\n')
310v5, v6 = simcirtest.testaa_totuustaulu_vs_kaavio(data, oikeataulu)
311sys.stdout.write(v6)
312sys.stdout.write('Virheet: ' + str(v5) + '\n\n')
309testit(otsikko, data, oikeadata, oikealauseke, oikeataulu)