diff --git a/runtime/indent/testdir/vb.ok b/runtime/indent/testdir/vb.ok
new file mode 100644
index 0000000..143c688
--- /dev/null
+++ b/runtime/indent/testdir/vb.ok
@@ -0,0 +1,134 @@
+' vim: filetype=vb shiftwidth=4 expandtab
+'
+' START_INDENT
+Public Type GEmployeeRecord     ' Create user-defined type. 
+    ID As Integer               ' Define elements of data type. 
+    Name As String * 20 
+    Address As String * 30 
+    Phone As Long 
+    HireDate As Date 
+End Type 
+
+Public Enum InterfaceColors 
+    icMistyRose = &HE1E4FF& 
+    icSlateGray = &H908070& 
+    icDodgerBlue = &HFF901E& 
+    icDeepSkyBlue = &HFFBF00& 
+    icSpringGreen = &H7FFF00& 
+    icForestGreen = &H228B22& 
+    icGoldenrod = &H20A5DA& 
+    icFirebrick = &H2222B2& 
+End Enum
+
+Enum SecurityLevel 
+    IllegalEntry = -1 
+    SecurityLevel1 = 0 
+    SecurityLevel2 = 1 
+End Enum 
+
+Public Function TestConditional (number As Integer, ext As String) As Boolean
+    Dim inRange As Boolean
+
+    Select Case number
+        Case <= 0
+            inRange = False
+        Case > 10
+            inRange = False
+        Case Else
+            inRange = True
+    End Select
+
+    ' This is a special case identified in the indent script.
+    Select Case number
+    End Select
+
+    If ext = ".xlm" Then
+        If inRange Then
+            TestConditional = True
+        Else
+            TestConditional = False
+        End If
+    ElseIf ext = ".xlsx" Then
+        If inRange Then
+            TestConditional = False
+        Else
+            TestConditional = True
+        End If
+    Else
+        TestConditional = False
+    End If
+End Function
+
+Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
+    Dim a() As Variant
+    Dim elmt As Variant
+    Dim found As Boolean
+    Dim indx As Integer
+    Const specialValue As Integer = 5
+
+    If uLimit < lLimit Then
+        Exit Sub
+    End If
+
+    ReDim a(lLimit To uLimit)
+    For indx=lLimit To Ulimit
+        a(indx) = 2 * indx
+    Next indx
+
+    found = False
+    For Each elmt in a
+        If elmt = specialValue Then
+            found = True
+        End If
+    Next elmt
+
+    If found then
+        indx = uLimit
+        Do While indx >= lLimit
+            indx = indx - 1
+        Loop
+    End If
+
+End Sub
+
+Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
+    Dim rng As Range
+
+    Set rng = Range(cellAddr)
+    With rng
+        .Cells(1,1).Value = _
+            "Line 1 of multiline string; " & _
+            "Line 2 of multiline string; " & _
+            "Line 3 of multiline string"
+    End With
+
+    ' The following lines have whitespace after the underscore character
+    ' and therefore do not form a valid multiline statement.  The indent
+    ' script correctly treats them as four single line statements contrary
+    ' to the author's obvious indent.
+    rng..Cells(1,1).Value = _ 
+    "Line 1 of multiline string; " & _ 
+    "Line 2 of multiline string; " & _ 
+    "Line 3 of multiline string"
+
+End Sub
+
+Private Sub TestStmtLabel()
+    GoTo stmtLabel
+
+    ' Statement labels are never indented
+stmtLabel:
+
+End Sub
+
+Sub TestTypeKeyword()
+    Type EmployeeRecord         ' Create user-defined type. 
+        ID As Integer           ' Define elements of data type. 
+        Name As String * 20 
+        Address As String * 30 
+        Phone As Long 
+        HireDate As Date 
+    End Type 
+    Dim varType As EmployeeRecord
+End Sub
+' END_INDENT
