<reponame>mvz/vb2py<gh_stars>1-10
from testframework import *

# << For tests >> (1 of 4)
# Simple test - note we are not interested in the value of the loop variable at the end of the loop
# hence the _var name
tests.append(("""
j = 0
For _var = 1 To 10
    j = j + _var
Next _var
""", {"j" : 55}))

# Simple test with step
tests.append(("""
j = 0
For _var = 1 To 10 Step 2
    j = j + _var
Next _var
""", {"j" : 25}))

# Simple test with reverse step
tests.append(("""
j = 0
For _var = 10 To 1 Step -1
    j = j + _var
Next _var
""", {"j" : 55}))

# Empty loop
tests.append(("""
j = 0
For _var = 10 To 1
    j = j + _var
Next _var
""", {"j" : 0}))

# Breaking out of the loop
tests.append(("""
j = 0
For _var = 1 To 10
    j = j + _var
    Exit For
Next _var
""", {"j" : 1}))

# Bizarre dotted name
tests.append(("""
Dim _me As Object
j = 0
For _me.you = 1 To 10
    j = j + _me.you
Next _me.you
""", {"j" : 55}))

# Name with type suffix
tests.append(("""
j = 0
For _int% = 1 To 10
    j = j + _int%
Next _int%
""", {"j" : 55}))

# Nested loop
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
    Next _other
Next _var
""", {"j" : 55, "k" : 100}))

# Nested loop - break from inner
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
        Exit For
    Next _other
Next _var
""", {"j" : 55, "k" : 10}))

# Nested loop - break from outer
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
    Next _other
    Exit For
Next _var
""", {"j" : 1, "k" : 10}))
# << For tests >> (3 of 4)
# Simple for each with collection
tests.append(("""
Dim _c As New Collection
_c.Add 10
_c.Add 20
_c.Add 30
t = 0
For Each _v In _c
    t = t + _v
Next _v
""", {"t" : 60}))

# Nested for each with collection
tests.append(("""
Dim _c As New Collection
_c.Add 10
_c.Add 20
_c.Add 30
Dim _d As New Collection
_d.Add 1
_d.Add 2
_d.Add 3
t = 0
For Each _v In _c
    t = t + _v
    For Each _x In _d
        t = t + _x
    Next _x
Next _v
""", {"t" : 78}))

# Simple for each with variant
tests.append(("""
Dim _c(10)
For _i = 1 To 10
    _c(_i) = _i
Next _i
t = 0
For Each _v In _c
    t = t + _v
Next _v
""", {"t" : 55}))
# << For tests >> (4 of 4)
# Simple test - note we are not interested in the value of the loop variable at the end of the loop
# hence the _var name
tests.append(("""
j = 0
For _var = 0.1 To 1.0
    j = j + _var
Next _var
""", {"j" : 0.1}))

# Simple test with step
tests.append(("""
j = 0
For _var = .1 To 1.0 Step .2
    j = j + _var
Next _var
""", {"j" : 2.5}))

# Simple test with reverse step
tests.append(("""
j = 0
For _var = 1.0 To .1 Step -.1
    j = j + _var
Next _var
j = int(j*10)
""", {"j" : 55}))

# Empty loop
tests.append(("""
j = 0
For _var = 1.0 To .1
    j = j + _var
Next _var
""", {"j" : 0}))

# Breaking out of the loop
tests.append(("""
j = 0
For _var = .1 To 1.0
    j = j + _var
    Exit For
Next _var
""", {"j" : .1}))
# -- end -- << For tests >>

import vb2py.vbparser
vb2py.vbparser.log.setLevel(0) # Don't print all logging stuff
TestClass = addTestsTo(BasicTest, tests)

if __name__ == "__main__":
    main()

from testframework import *

# << For tests >> (1 of 4)
# Simple test - note we are not interested in the value of the loop variable at the end of the loop
# hence the _var name
tests.append(("""
j = 0
For _var = 1 To 10
    j = j + _var
Next _var
""", {"j" : 55}))

# Simple test with step
tests.append(("""
j = 0
For _var = 1 To 10 Step 2
    j = j + _var
Next _var
""", {"j" : 25}))

# Simple test with reverse step
tests.append(("""
j = 0
For _var = 10 To 1 Step -1
    j = j + _var
Next _var
""", {"j" : 55}))

# Empty loop
tests.append(("""
j = 0
For _var = 10 To 1
    j = j + _var
Next _var
""", {"j" : 0}))

# Breaking out of the loop
tests.append(("""
j = 0
For _var = 1 To 10
    j = j + _var
    Exit For
Next _var
""", {"j" : 1}))

# Bizarre dotted name
tests.append(("""
Dim _me As Object
j = 0
For _me.you = 1 To 10
    j = j + _me.you
Next _me.you
""", {"j" : 55}))

# Name with type suffix
tests.append(("""
j = 0
For _int% = 1 To 10
    j = j + _int%
Next _int%
""", {"j" : 55}))

# Nested loop
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
    Next _other
Next _var
""", {"j" : 55, "k" : 100}))

# Nested loop - break from inner
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
        Exit For
    Next _other
Next _var
""", {"j" : 55, "k" : 10}))

# Nested loop - break from outer
tests.append(("""
j = 0
k = 0
For _var = 1 To 10
    j = j + _var
    For _other = 1 To 10
        k = k + 1
    Next _other
    Exit For
Next _var
""", {"j" : 1, "k" : 10}))
# << For tests >> (3 of 4)
# Simple for each with collection
tests.append(("""
Dim _c As New Collection
_c.Add 10
_c.Add 20
_c.Add 30
t = 0
For Each _v In _c
    t = t + _v
Next _v
""", {"t" : 60}))

# Nested for each with collection
tests.append(("""
Dim _c As New Collection
_c.Add 10
_c.Add 20
_c.Add 30
Dim _d As New Collection
_d.Add 1
_d.Add 2
_d.Add 3
t = 0
For Each _v In _c
    t = t + _v
    For Each _x In _d
        t = t + _x
    Next _x
Next _v
""", {"t" : 78}))

# Simple for each with variant
tests.append(("""
Dim _c(10)
For _i = 1 To 10
    _c(_i) = _i
Next _i
t = 0
For Each _v In _c
    t = t + _v
Next _v
""", {"t" : 55}))
# << For tests >> (4 of 4)
# Simple test - note we are not interested in the value of the loop variable at the end of the loop
# hence the _var name
tests.append(("""
j = 0
For _var = 0.1 To 1.0
    j = j + _var
Next _var
""", {"j" : 0.1}))

# Simple test with step
tests.append(("""
j = 0
For _var = .1 To 1.0 Step .2
    j = j + _var
Next _var
""", {"j" : 2.5}))

# Simple test with reverse step
tests.append(("""
j = 0
For _var = 1.0 To .1 Step -.1
    j = j + _var
Next _var
j = int(j*10)
""", {"j" : 55}))

# Empty loop
tests.append(("""
j = 0
For _var = 1.0 To .1
    j = j + _var
Next _var
""", {"j" : 0}))

# Breaking out of the loop
tests.append(("""
j = 0
For _var = .1 To 1.0
    j = j + _var
    Exit For
Next _var
""", {"j" : .1}))
# -- end -- << For tests >>

import vb2py.vbparser
vb2py.vbparser.log.setLevel(0) # Don't print all logging stuff
TestClass = addTestsTo(BasicTest, tests)

if __name__ == "__main__":
    main()
# << For tests >> (1 of 4) # Simple test - note we are not interested in the value of the loop variable at the end of the loop # hence the _var name j = 0 For _var = 1 To 10     j = j + _var Next _var # Simple test with step j = 0 For _var = 1 To 10 Step 2     j = j + _var Next _var # Simple test with reverse step j = 0 For _var = 10 To 1 Step -1     j = j + _var Next _var # Empty loop j = 0 For _var = 10 To 1     j = j + _var Next _var # Breaking out of the loop j = 0 For _var = 1 To 10     j = j + _var     Exit For Next _var # Bizarre dotted name Dim _me As Object j = 0 For _me.you = 1 To 10     j = j + _me.you Next _me.you # Name with type suffix j = 0 For _int% = 1 To 10     j = j + _int% Next _int% # Nested loop j = 0 k = 0 For _var = 1 To 10     j = j + _var     For _other = 1 To 10         k = k + 1     Next _other Next _var # Nested loop - break from inner j = 0 k = 0 For _var = 1 To 10     j = j + _var     For _other = 1 To 10         k = k + 1         Exit For     Next _other Next _var # Nested loop - break from outer j = 0 k = 0 For _var = 1 To 10     j = j + _var     For _other = 1 To 10         k = k + 1     Next _other     Exit For Next _var # << For tests >> (3 of 4) # Simple for each with collection Dim _c As New Collection _c.Add 10 _c.Add 20 _c.Add 30 t = 0 For Each _v In _c     t = t + _v Next _v # Nested for each with collection Dim _c As New Collection _c.Add 10 _c.Add 20 _c.Add 30 Dim _d As New Collection _d.Add 1 _d.Add 2 _d.Add 3 t = 0 For Each _v In _c     t = t + _v     For Each _x In _d         t = t + _x     Next _x Next _v # Simple for each with variant Dim _c(10) For _i = 1 To 10     _c(_i) = _i Next _i t = 0 For Each _v In _c     t = t + _v Next _v # << For tests >> (4 of 4) # Simple test - note we are not interested in the value of the loop variable at the end of the loop # hence the _var name j = 0 For _var = 0.1 To 1.0     j = j + _var Next _var # Simple test with step j = 0 For _var = .1 To 1.0 Step .2     j = j + _var Next _var # Simple test with reverse step j = 0 For _var = 1.0 To .1 Step -.1     j = j + _var Next _var j = int(j*10) # Empty loop j = 0 For _var = 1.0 To .1     j = j + _var Next _var # Breaking out of the loop j = 0 For _var = .1 To 1.0     j = j + _var     Exit For Next _var # -- end -- << For tests >> # Don't print all logging stuff