VBA to T-SQL via TDD: Step 9

Step 9. Execute the test query in SQL Server

VBA to T-SQL via TDD: Step 9

This is Part 1 of my series on converting a VBA function to a SQL Server scalar function using test driven development.  As a proof of concept, I will be re-implementing the VBA Round function (which uses bankers rounding) as a SQL Server scalar function.


Testing Against the Dummy Function

In Step 7, we ran our test query to verify that all the tests fail when running against a dummy function that is hard-coded to always return zero.  As a reminder, here was the dummy function:

CREATE FUNCTION dbo.VBA_Round(
    @OriginalVal sql_variant,
    @RoundDigits int
)
RETURNS float
AS
BEGIN
    RETURN 0
END;

The test query returned 17 rows, which means that 17 out of 19 test cases failed:

Testing the Refactored Function

In Step 8, we refactored the VBA_Round() function to address these 17 failures.  Here's the ALTER FUNCTION statement we ran:

ALTER FUNCTION [dbo].[VBA_Round](
    @OriginalVal sql_variant,
    @RoundDigits int
)
RETURNS float
AS
BEGIN
    RETURN Round(Cast(@OriginalVal as float), @RoundDigits)
END;

After executing the above statement, it is time to re-run the test query.  

The test query now returns only four records (down from 17).  In other words, the results below represent the only tests from our test suite that are still failing.  Once we get these remaining tests to pass, we are home free.

Referenced articles

How to Convert a VBA Function to a SQL Server Scalar Function
MS Access Developers Can Remove All the Risk From This Complex Process With These 3 Words
Trust But Verify
What Ronald Reagan’s Words Can Teach Us About the Sample Code We Find on the Internet
VBA to T-SQL via TDD: Step 7
Step 7. Execute the test query in SQL Server to verify it fails
VBA to T-SQL via TDD: Step 6
Step 6. Build a test query in SQL Server to return failing tests
VBA to T-SQL via TDD: Step 5
Step 5. Create a dummy scalar function in SQL Server
VBA to T-SQL via TDD: Step 8
Step 8. Alter the scalar function to address failures

All original code samples by Mike Wolfe are licensed under CC BY 4.0