Access JumpStart 2.0 | Blog

A Rapid Development Framework for Microsoft Access

Here is another simple code kata produced for me by CoPilot. Thanks CoPilot!


Task:

We need a function that can reverse a given string.

Examples (input → output):

  • "hello" → "olleh"
  • "VBA" → "ABV"
  • "12345" → "54321"

Ok, so first I will create the test cases and then create a generalized function to take a string as an argument and provide the reversed string as the returned value.

Here are my tests, very similar to the module I created for the first kata:

'@TestModule
'@Folder("Tests")

Option Compare Database 

Option Explicit 
Option Private Module 

#Const LateBind = LateBindTests 

#If LateBind Then 
    Private Assert As Object 
    Private Fakes As Object 
#Else 
    Private Assert As Rubberduck.AssertClass 
    Private Fakes As Rubberduck.FakesProvider 
#End If 

'@ModuleInitialize
Private Sub ModuleInitialize() 
    'this method runs once per module.
    #If LateBind Then 
        Set Assert = CreateObject( "Rubberduck.AssertClass") 
        Set Fakes = CreateObject( "Rubberduck.FakesProvider") 
    #Else 
        Set Assert = New Rubberduck.AssertClass 
        Set Fakes = New Rubberduck.FakesProvider 
    #End If 
End Sub 

'@ModuleCleanup
Private Sub ModuleCleanup() 
    'this method runs once per module.
    Set Assert = Nothing 
    Set Fakes = Nothing 
End Sub 

'@TestMethod("ReverseString")
Private Sub Test_hello() 
    On Error GoTo TestFail 
    
    'Arrange:
    Dim paramIn As String 
    Dim funcOut As String 
    paramIn =  "hello"
    
    'Act:
    funcOut = ReverseString(paramIn) 
    
    'Assert:
    Assert.AreEqual  "olleh",funcOut 

TestExit: 
    '@Ignore UnhandledOnErrorResumeNext
    On Error Resume Next 
    
    Exit Sub 
TestFail: 
    Assert.Fail  "Test raised an error: #" & Err.Number &  " - " & Err.Description 
    Resume TestExit 
End Sub 

'@TestMethod("ReverseString")
Private Sub Test_VBA() 
    On Error GoTo TestFail 
    
    'Arrange:
    Dim paramIn As String 
    Dim funcOut As String 
    paramIn =  "VBA"
    
    'Act:
    funcOut = ReverseString(paramIn) 
    
    'Assert:
    Assert.AreEqual  "ABV",funcOut 

TestExit: 
    '@Ignore UnhandledOnErrorResumeNext
    On Error Resume Next 
    
    Exit Sub 
TestFail: 
    Assert.Fail  "Test raised an error: #" & Err.Number &  " - " & Err.Description 
    Resume TestExit 
End Sub 

'@TestMethod("ReverseString")
Private Sub Test_12345() 
    On Error GoTo TestFail 
    
    'Arrange:
    Dim paramIn As String 
    Dim funcOut As String 
    paramIn =  "12345"
    
    'Act:
    funcOut = ReverseString(paramIn) 
    
    'Assert:
    Assert.AreEqual  "54321",funcOut 

TestExit: 
    '@Ignore UnhandledOnErrorResumeNext
    On Error Resume Next 
    
    Exit Sub 
TestFail: 
    Assert.Fail  "Test raised an error: #" & Err.Number &  " - " & Err.Description 
    Resume TestExit 
End Sub 

And here is the CodeKata module with both the prior function and my new ReverseString function:

Option Compare Database 
Option Explicit 

Public Function IntegerToString(intVal As Integer) As String 
    IntegerToString = intVal 
End Function 

Public Function ReverseString(forward As String) As String 
    Dim i As Integer 
    Dim reverse As String 
    For i = Len(forward) To 1 Step -1 
        reverse = reverse & Mid(forward,i,1) 
    Next i 
    ReverseString = reverse 
End Functio 

In this case I chose to do a loop to count down backwards from the length of the original string and recreate it using the mid function one character at a time. how many ways can you find to reverse a string?

Sign up For a Daily Email Adventure in Microsoft Access

Every business day (typically M-F), I'll send you an email with information about my ongoing journey as an advanced Access application developer. It will be loaded with my tips and musings.

    We won't send you spam. Unsubscribe at any time.