First attempt at Python port, expand tests.
This commit is contained in:
		
							
								
								
									
										58
									
								
								packages/python/test/index.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								packages/python/test/index.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
sys.path.insert(1, os.path.join(sys.path[0], '..'))
 | 
			
		||||
 | 
			
		||||
from parser import createLineData, parseLine
 | 
			
		||||
 | 
			
		||||
def next():
 | 
			
		||||
  return sys.stdin.readline().rstrip('\n')
 | 
			
		||||
 | 
			
		||||
def linedata_basic ():
 | 
			
		||||
  lineData = createLineData('')
 | 
			
		||||
 | 
			
		||||
  while l := next():
 | 
			
		||||
    lineData['line'] = l
 | 
			
		||||
    parseLine(lineData)
 | 
			
		||||
    print("| level {level} | indent {indent} | offsetHead {offsetHead} | offsetTail {offsetTail} | line {line} |".format(
 | 
			
		||||
      level = lineData['level'], indent = lineData['indent'], offsetHead = lineData['offsetHead'], offsetTail = lineData['offsetTail'], line = lineData['line']
 | 
			
		||||
    ))
 | 
			
		||||
 | 
			
		||||
def linedata_tabs ():
 | 
			
		||||
  lineData = createLineData('', '\t')
 | 
			
		||||
 | 
			
		||||
  while l := next():
 | 
			
		||||
    lineData['line'] = l
 | 
			
		||||
    parseLine(lineData)
 | 
			
		||||
    print("| level {level} | indent {indent} | offsetHead {offsetHead} | offsetTail {offsetTail} | line {line} |".format(
 | 
			
		||||
      level = lineData['level'], indent = lineData['indent'], offsetHead = lineData['offsetHead'], offsetTail = lineData['offsetTail'], line = lineData['line']
 | 
			
		||||
    ))
 | 
			
		||||
 | 
			
		||||
def linedata_head_tail ():
 | 
			
		||||
  lineData = createLineData('')
 | 
			
		||||
 | 
			
		||||
  while l := next():
 | 
			
		||||
    lineData['line'] = l
 | 
			
		||||
    parseLine(lineData)
 | 
			
		||||
    head = lineData['line'][lineData['offsetHead']:lineData['offsetTail']] if len(lineData['line']) > lineData['offsetTail'] else ''
 | 
			
		||||
    tail = lineData['line'][lineData['offsetTail'] + 1:] if len(lineData['line']) > lineData['offsetTail'] + 1 else ''
 | 
			
		||||
 | 
			
		||||
    print("| head {head} | tail {tail} |".format(
 | 
			
		||||
      head = head, tail = tail
 | 
			
		||||
    ))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
tests = {
 | 
			
		||||
  'linedata:basic': linedata_basic,
 | 
			
		||||
  'linedata:tabs': linedata_tabs,
 | 
			
		||||
  'linedata:head-tail': linedata_head_tail
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
  testName = sys.argv[1]
 | 
			
		||||
  test = tests[testName]
 | 
			
		||||
  test()
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
  main()
 | 
			
		||||
		Reference in New Issue
	
	Block a user