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
-~----------~----~----~----~------~----~------~--~---

Reply via email to