# Test Functions

A test function performs data comparisons. Use a test function to identify the data type of a value, or determine if a value exists. You can use a test function on all data types.

## CompareDictionary

`CompareDictionary(a,b)`

: Compares 2 strings ignoring case differences, and compares text that appears to consist of numbers, in numerical order. The function returns -1 if a < b, 0 if a==b, and 1 if a > b.

This function is not exactly the same order as a dictionary compare, in that it does not handle diacritical marks the same way the Sort tool does when configured to do a dictionary sort using the conventions of a particular language.

### Example

`CompareDictionary("apples","bananas")`

returns -1.

`CompareDictionary("APPLES","bananas")`

returns -1.

`CompareDictionary("apples","BANANAS")`

returns -1.

`CompareDictionary("Cherries","Bananas")`

returns 1.

`CompareDictionary("Bananas","bananas")`

returns 0.

`CompareDictionary("2","10")`

returns -1 (2 is less than 10, even though the character '2' is greater than the character '1').

`CompareDictionary("minus -2","minus -10")`

returns 1 (-2 is greater than -10. Minus signs are only recognized at the beginning or after white space).

`CompareDictionary("minus-2","minus-10")`

returns -1 (2 is less than 10. The minus sign, not being after a space, was not counted as part of the number).

`CompareDictionary("pi 3.14","pi 6.28e-1")`

returns 1 (Yes, it recognizes floating-point number syntax, and 3.14 is greater than 0.628).

`CompareDictionary("12.00","12.0")`

returns 1 (When numbers have the same value, the longer string of digits is considered greater).

`CompareDictionary("a", "À")`

returns -1.

`CompareDictionary("n","ñ")`

returns -1 (letters with marks are larger in the Latin alphabet than all the unmarked letters).

`CompareDictionary("o","ñ")`

returns -1 (In a Spanish Dictionary compare the Ñ should be less than O. This is not a linguistic dictionary comparison).

`CompareDictionary("ñ","Ñ")`

returns 0 (marked characters compare ignoring case, too).

## CompareDigits

`CompareDigits(a, b, nNumDigits)`

: Compares 2 numbers and determines if they are the same to the given number of digits (nNumDigits).

The comparison finds the difference between the numbers and reports A and B the same when the leading digit of the difference is nNumDigits or more places to the right of the digits of the larger of A and B.

The nNumDigits parameter must not be null and must be between 1 and 19, otherwise, an error results. If a non-integer is given, it is rounded to the nearest integer (nNumDigits can be between 0.5 and 19.499).

### Example

`CompareDigits(12345, 12444, 3)`

returns "True" (because the difference is 99, and its leading digit is 3 places to the right of the leading digit of A).

`CompareDigits(12345, 12445, 3)`

returns "False" (because the difference is 100, and its leading digit is only 2 places to the right of the leading digit of A).

`CompareDigits(12.345, 12.347, 3)`

returns "True" (because the difference is 0.002, and its leading digit is 4 places to the right of the leading digit of A).

`CompareDigits(12.345, 12.435, 3)`

returns "True" (because the difference is 0.09, and its leading digit is 3 places to the right of the leading digit of A).

`CompareDigits( .91234, .91334, 3)`

returns "False" (because the difference is .001, and its leading digit is only 2 places to the right of the leading digit of A).

## CompareEpsilon

`CompareEpsilon(a, b, epsilon)`

: Compares 2 floating-point numbers and returns True if they are within epsilon.

### Example

`CompareEpsilon(123.456789101112, 123.456789101114, 0.0001)`

returns "True."

`CompareEpsilon(123.456, 123.456789101112, 0.0001)`

returns "False."

## IsEmpty

`IsEmpty(v)`

: Tests if v is NULL or equal to "".

### Example

Name (v) | IsEmpty |
---|---|

John | False |

True | |

Mary | False |

[Null] | True |

## IsInteger

`IsInteger(v)`

: Tests if (v) contains a value that can be converted to an integer. If so, it returns True.

### Section

Value (v) | IsInteger |
---|---|

1 | True |

1.23 | False |

B | False |

## IsNull

`IsNull(v)`

: Tests if (v) is NULL. Returns True if v is NULL, otherwise returns False.

To populate a row with a NULL value, use the `NULL()`

function.

### Example

Name (v) | IsNull |
---|---|

John | False |

[Null] | True |

Mary | False |

## IsNumber

`IsNumber(v)`

: Tests if the field type for (v) is a number or not.

## IsSpatialObj

`IsSpatialObj(v)`

: Tests if the field type for (v) is a spatial object or not.

## IsString

`IsString(v)`

: Tests if the field type for (v) is a string or not.