def METHOD_NAME(show_plots, offCount):
    testFailCount = 0                       # zero unit test result counter
    testMessages = []                       # create empty array to store test log messages
    unitTaskName = "unitTask"
    unitProcessName = "testProcess"
    scSim = SimulationBaseClass.SimBaseClass()
    #
    #  create the dynamics simulation process
    #
    dynProcess = scSim.CreateNewProcess(unitProcessName)
    # create the dynamics task and specify the integration update time
    dynProcess.addTask(scSim.CreateNewTask(unitTaskName, macros.sec2nano(0.1)))
    testObject = ExtPulsedTorque.ExtPulsedTorque()
    testObject.ModelTag = "externalPulsedTorque"
    # These don't do anything. They are here to confirm they don't do anything
    testObject.readInputMessages()
    testObject.writeOutputMessages(0)
    testObject.pulsedTorqueExternalPntB_B = [[-1], [1],[ -1]]
    testObject.countOnPulse = 1
    testObject.countOff = offCount
    scSim.AddModelToTask(unitTaskName, testObject)
    #
    #   initialize the simulation
    #
    scSim.InitializeSimulation()
    #
    #   Setup data logging
    #
    DT = 0.1
    testProcessRate = macros.sec2nano(DT)
    variableTorque = "torqueExternalPntB_B"       # name the module variable to be logged
    scSim.AddVariableForLogging (testObject.ModelTag + "." + variableTorque, testProcessRate, 0, 2, 'double')
    #
    #   run the simulation
    #
    for tStop in range(1, 11):
        scSim.ConfigureStopTime(macros.sec2nano(tStop*DT))
        scSim.ExecuteSimulation()
        testObject.computeForceTorque(scSim.TotalSim.CurrentNanos, testProcessRate)
        scSim.TotalSim.SingleStepProcesses()
        scSim.RecordLogVars()
    # log the data
    dataTorque = scSim.GetLogVariableData(testObject.ModelTag+"."+variableTorque)
    np.set_printoptions(precision=16)
    # Remove time zero from list
    dataTorque = dataTorque[1:len(dataTorque),:]
    dataTorque = np.delete(dataTorque, 0, axis=1)  # remove time column
    #
    #   set true position information
    #
    if (offCount == 3):
        trueTorque_B = [
                  [0.0, 0.0, 0.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [0.0, 0.0, 0.0]
                , [0.0, 0.0, 0.0]
                , [0.0, 0.0, 0.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [0.0, 0.0, 0.0]
                , [0.0, 0.0, 0.0]
                , [0.0, 0.0, 0.0]
        ]
    if (offCount == 0):
        trueTorque_B = [
                  [0.0, 0.0, 0.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
                , [-1.0, 1.0, -1.0]
                , [1.0, -1.0, 1.0]
        ]
    # compare the module results to the truth values
    accuracy = 1e-12
    if (len(trueTorque_B) != len(dataTorque)):
        testFailCount += 1
        testMessages.append("FAILED:  ExtPulsedTorque failed torque unit test (unequal array sizes)\n")
    else:
        for i in range(0,len(trueTorque_B)):
            # check a vector values
            if not unitTestSupport.isArrayEqual(dataTorque[i],trueTorque_B[i],3,accuracy):
                testFailCount += 1
                testMessages.append("FAILED:  ExtPulsedTorque failed torque unit test at t=" + str(dataTorque[i,0]*macros.NANO2SEC) + "sec\n")
    #   print out success message if no error were found
    if testFailCount == 0:
        print("PASSED ")
    # each test method requires a single assert method to be called
    # this check below just makes sure no sub-test failures were found
    return [testFailCount, ''.join(testMessages)]