diff --git a/examples/all_checks_example.sv b/examples/all_checks_example.sv new file mode 100644 index 0000000..27b52ce --- /dev/null +++ b/examples/all_checks_example.sv @@ -0,0 +1,147 @@ +// Example demonstrating all uvmkit_check macros with passing cases +// This example shows successful assertions for each macro type + +module tb; + + // Example class for object checks + class MyClass; + int value; + function new(int v); + value = v; + endfunction + endclass + + // Example enum for enum checks + typedef enum {RED, GREEN, BLUE} color_e; + + initial begin + MyClass obj1, obj2; + color_e color1, color2; + string str1, str2; + real r1, r2; + + $display("=== uvmkit_check Examples ===\n"); + + // ======================================== + // Basic Checks + // ======================================== + $display("--- Basic Checks ---"); + + // check_true: passes when expression is true + `uvmkit_check_true(1) + `uvmkit_check_true(5 > 3) + + // check_false: passes when expression is false + `uvmkit_check_false(0) + `uvmkit_check_false(2 < 1) + + // ======================================== + // Equality Checks + // ======================================== + $display("--- Equality Checks ---"); + + // check_equals: passes when values are equal + `uvmkit_check_equals(1, 1) + `uvmkit_check_equals(8'hAA, 8'hAA) + `uvmkit_check_equals(1'bx, 1'bx) + + // check_not_equals: passes when values are not equal + `uvmkit_check_not_equals(1, 0) + `uvmkit_check_not_equals(8'hAA, 8'h55) + `uvmkit_check_not_equals(1'bx, 1'b0) + + // ======================================== + // Null Checks + // ======================================== + $display("--- Null Checks ---"); + + obj1 = null; + obj2 = new(42); + + // check_null: passes when object is null + `uvmkit_check_null(obj1) + + // check_not_null: passes when object is not null + `uvmkit_check_not_null(obj2) + + // ======================================== + // Object Identity Checks + // ======================================== + $display("--- Object Identity Checks ---"); + + obj1 = new(10); + obj2 = obj1; // Same object reference + + // check_same: passes when objects are the same reference + `uvmkit_check_same(obj1, obj2) + + obj2 = new(10); // Different object + + // check_not_same: passes when objects are different references + `uvmkit_check_not_same(obj1, obj2) + + // ======================================== + // Real Number Checks + // ======================================== + $display("--- Real Number Checks ---"); + + r1 = 3.14159; + r2 = 3.14160; + + // check_equals_real: passes when values are within delta + `uvmkit_check_equals_real(r1, r2, 0.001) + `uvmkit_check_equals_real(1.0, 1.0, 0.0) + + // check_not_equals_real: passes when values differ by more than delta + `uvmkit_check_not_equals_real(r1, r2, 0.00001) + `uvmkit_check_not_equals_real(1.0, 2.0, 0.5) + + // ======================================== + // Enum Checks + // ======================================== + $display("--- Enum Checks ---"); + + color1 = RED; + color2 = RED; + + // check_equals_enum: passes when enum values are equal + `uvmkit_check_equals_enum(color_e, color1, color2) + `uvmkit_check_equals_enum(color_e, RED, RED) + + color2 = BLUE; + + // check_not_equals_enum: passes when enum values differ + `uvmkit_check_not_equals_enum(color_e, color1, color2) + `uvmkit_check_not_equals_enum(color_e, RED, BLUE) + + // ======================================== + // String Checks + // ======================================== + $display("--- String Checks ---"); + + str1 = "hello"; + str2 = "hello"; + + // check_equals_string: passes when strings are equal + `uvmkit_check_equals_string(str1, str2) + `uvmkit_check_equals_string("test", "test") + + str2 = "world"; + + // check_not_equals_string: passes when strings differ + `uvmkit_check_not_equals_string(str1, str2) + `uvmkit_check_not_equals_string("hello", "world") + + // ======================================== + // Checks with Custom Messages + // ======================================== + $display("--- Checks with Custom Messages ---"); + + `uvmkit_check_true(1, "This check should pass") + `uvmkit_check_equals(42, 42, "Answer to life") + `uvmkit_check_equals_string("pass", "pass", "String comparison") + + $finish; + end + +endmodule