Revision: 1361 Author: [email protected] Date: Tue Sep 29 01:44:14 2009 Log: undo unittest changeset http://code.google.com/p/jallib/source/detail?r=1361
Deleted: /trunk/test/unittest/18f14k50_adc.jalt Modified: /trunk/tools/jallib.py ======================================= --- /trunk/test/unittest/18f14k50_adc.jalt Mon Sep 28 16:41:33 2009 +++ /dev/null @@ -1,137 +0,0 @@ --- Title: unittest to check ADC libs for 18f14k50 --- Author: Albert Faber, Copyright (c) 2009, all rights reserved. --- Adapted-by: --- Compiler: >=2.4l --- --- This file is part of jallib (http://jallib.googlecode.com) --- Released under the BSD license (http://www.opensource.org/licenses/bsd-license.php) --- --- Description: this describes multiple unittests (a testcase), to test the --- many different combination while setting up ADC. --- --- Notes: see jallib wiki page about unit testing to learn how to use this file --- - -;@jallib section pic -include 18f14k50 ;@no_debug -pragma target OSC HS -pragma target clock 20_000_000 -pragma target WDT disabled -enable_digital_io() --- force analog pin/port to be output, so we can check they are --- automagically set as input when configured (else it can be optimized away) -porta_direction = all_output -portb_direction = all_output -portc_direction = all_output - - -;@jallib section self_test -include unittest -var byte a = 120 -test_byte(a) ;@assertEquals 120 test_test - - -;@jallib testcase test_all_analog_pins -;@jallib use pic -;@jallib use self_test -const byte ADC_NVREF = 0 -const bit ADC_HIGH_RESOLUTION = false -const word ADC_RSOURCE = 2_500 -porta_direction = all_output -portb_direction = all_output -portc_direction = all_output - -include adc -adc_init() - -set_analog_pin(0) --- check pin on PORTA configured as inputs (not supported) -asm nop -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an0_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0_input -asm nop -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an0_input - - -set_analog_pin(1) --- check pin on PORTA configured as inputs (not supported) -asm nop -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an01_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01_input -asm nop -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an01_input - -set_analog_pin(2) --- check pin on PORTA configured as inputs (not supported) -asm nop -test_byte(TRISA) ;@assertEquals 0 test_porta_pin_an012_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012_input -asm nop -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an012_input - - -set_analog_pin(3) --- check pin on PORTA configured as inputs (0b_0001_0000 => RA{4}) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an0123_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0123_input -asm nop -test_byte(TRISC) ;@assertEquals 0 test_portb_pin_an0123_input - -set_analog_pin(4) --- check pin on PORTC configured as inputs (0b_0000_0001 => RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an01234_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01234_input -asm nop -test_byte(TRISC) ;@assertEquals 1 test_portb_pin_an01234_input - -set_analog_pin(5) --- check pin on PORTC configured as inputs (0b_0000_0011 => RC{1},RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an012345_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012345_input -asm nop -test_byte(TRISC) ;@assertEquals 3 test_portb_pin_an012345_input - -set_analog_pin(6) --- check pin on PORTC configured as inputs (0b_0000_0111 => RC{2},RC{1},RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an0123456_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0123456_input -asm nop -test_byte(TRISC) ;@assertEquals 7 test_portb_pin_an0123456_input - -set_analog_pin(7) --- check pin on PORTC configured as inputs (0b_0000_1111 => RC{3},RC{2},RC{1},RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an01234567_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an01234567_input -asm nop -test_byte(TRISC) ;@assertEquals 15 test_portb_pin_an01234567_input - -set_analog_pin(8) --- check pin on PORTC configured as inputs (0b_0100_1111 => RC(6),RC{3},RC{2},RC{1},RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an012345678_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an012345678_input -asm nop -test_byte(TRISC) ;@assertEquals 79 test_portb_pin_an012345678_input - -set_analog_pin(9) --- check pin on PORTC configured as inputs (0b_1100_1111 => RC{7},RC{6},RC{3},RC{2},RC{1},RC{0} ) -asm nop -test_byte(TRISA) ;@assertEquals 32 test_porta_pin_an0123456789_input -asm nop -test_byte(TRISB) ;@assertEquals 0 test_portb_pin_an0123456789_input -asm nop -test_byte(TRISC) ;@assertEquals 207 test_portb_pin_an0123456789_input ======================================= --- /trunk/tools/jallib.py Mon Sep 28 15:23:55 2009 +++ /trunk/tools/jallib.py Tue Sep 29 01:44:14 2009 @@ -47,6 +47,12 @@ except ImportError: has_subprocess = False +try: + import picshell.engine.core.PicEngine + has_picshell = True +except ImportError: + has_picshell = False + ######### # TOOLS # @@ -756,6 +762,81 @@ # JALAPI FUNC # #-------------# +def picshell_unittest(jalFileName,asmFileName,hexFileName): + + if not has_picshell: + print >> sys.stderr, "Can't find PICShell libraries. Install PICShell and adjust PYTHONPATH" + sys.exit(255) + + # This piece of code is loosely based on PICShell implementation. + # This is a quick & dirty assembling :) + + from picshell.parser.JalV2AsmParser import JalV2AsmParser + from picshell.parser.AnnotationParser import AnnotationParser + from picshell.engine.core.PicThreadEngine import PicThreadEngine + from picshell.engine.core.PicEngine import PicEngine + from picshell.engine.core.State import State + from picshell.util.AssertUtil import AssertUtil + + from picshell.ui.UIManager import UIManager + + asmParser = JalV2AsmParser() + wholeCode = asmParser.parseAsmFile(asmFileName, []) + varTypeDict = JalV2AsmParser.buildVarTypeDict(wholeCode) + + parseRes = AnnotationParser.parse(file(jalFileName).read()) + noDebugList = parseRes["noDebug"] + debugList = parseRes["debug"] + langParser = JalV2AsmParser() + code = langParser.parseAsmFile(asmFileName, noDebugList,debugList) + + def unittest_callback(address,oracle): + line = langParser.adrToLine[address] + if line != None: + txt = code[line].line + if "@assertEquals" in txt: + res = AssertUtil.parse(txt) + var = res["var"].lower() + label = res["label"] + ref = res["ref"] + if (langParser.varAdrMapping.has_key("v_"+str(var))): + varAddr = langParser.varAdrMapping["v_"+str(var)] + varType = type = varTypeDict.get(var,'bit') + val = ui.varValue(varAddr,varType) + res= varType+" "+var+" (@"+str(varAddr)+") = 0x%X , expected : 0x%X" %(val,ref) + + print label, + if (ref == val) : + oracle['success'] += 1 + print ": OK" + else : + oracle['failure'] += 1 + print ": FAIL, %s != %s" % (ref,val) + else: + oracle['notrun'] += 1 + print "Can't run test '%s' because var '%s' can't be found" % (label,var) + + emu = PicEngine.newInstance(State(),hexFileName) + # needed to access varValue function + ui = UIManager() + ui.emu = emu + + # success failure notrun + oracle = {'success' : 0, 'failure' : 0, 'notrun' : 0} + def run(to,emu,unittest_callback): + current_address = emu.runNext() + while current_address != to: + #unit testing ? + if unittest_callback != None: + unittest_callback(current_address,oracle) + current_address = emu.runNext() + # last call on finishing address + unittest_callback(current_address,oracle) + + run(emu.lastAddress,emu,unittest_callback) + + return oracle + def unittest(filename,verbose=False): oracle = {'success' : None, 'failure' : None, 'notrun' : None} content = file(filename).read().splitlines() @@ -766,8 +847,6 @@ fout = file(fnout,"w") ferr = file(fnerr,"w") status = do_compile([filename],exitonerror=False,clean=False,stdout=fout,stderr=ferr) - fout.close() - ferr.close() except Exception,e: print >> sys.stderr, "Error while compiling file '%s': %s" % (filename,e) raise @@ -778,30 +857,15 @@ jal = filename asm = filename.replace(".jal",".asm") hex = filename.replace(".jal",".hex") - - try: - from picshell.console.picshell_unittest import picshell_unittest - oracle = picshell_unittest(jal,asm,hex) - except ImportError: - print >> sys.stderr, "Can't find PICShell libraries. Install PICShell and adjust PYTHONPATH" - sys.exit(255) - oracle['failure'] = 1 - + oracle = picshell_unittest(jal,asm,hex) else: oracle['failure'] = 1 finally: - fout = file(fnout) - ferr = file(fnerr) - clean_compiler_products(filename) - - fout.close() - ferr.close() if verbose: - print fout.read() - print ferr.read() - + print file(fnout).read() + print file(fnerr).read() os.unlink(fnout) os.unlink(fnerr) @@ -1210,7 +1274,8 @@ tests, several sections, which are assembled on the fly (something like board/test files producing samples) -Tests is done using PICShell unittesting facilities. Several actions can be checked: +Tests is done using PICShell unittesting facilities. PIC 18F aren't +supported. Several actions can be checked: - @assertEquals: will check a variable against a value (from PICShell). --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jallib" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jallib?hl=en -~----------~----~----~----~------~----~------~--~---
