summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compute/enum-conversion2.slang44
-rw-r--r--tests/compute/enum-conversion2.slang.expected.txt4
-rw-r--r--tests/diagnostics/enum-implicit-conversion.slang.expected1
-rw-r--r--tests/diagnostics/interface-requirement-not-satisfied.slang12
-rw-r--r--tests/diagnostics/interface-requirement-not-satisfied.slang.expected6
5 files changed, 67 insertions, 0 deletions
diff --git a/tests/compute/enum-conversion2.slang b/tests/compute/enum-conversion2.slang
new file mode 100644
index 000000000..13d807277
--- /dev/null
+++ b/tests/compute/enum-conversion2.slang
@@ -0,0 +1,44 @@
+// enum-conversion2.slang
+
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+
+// More significant stress testing of `enum` types
+
+enum Flower
+{
+ Rose,
+ Violet,
+ Tulip,
+ Orchid,
+ Chrysanthemum,
+}
+
+int test(int val)
+{
+ Flower a = Flower(val);
+ Flower b = Flower(uint(val));
+
+ uint x = uint(a);
+ int y = int(b);
+
+ uint z = (x + y)/2 + uint(Flower.Violet);
+
+ Flower c = Flower(z);
+ return int(c);
+}
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint tid = dispatchThreadID.x;
+
+ int val = int(tid);
+ val = test(val);
+
+ outputBuffer[tid] = val;
+} \ No newline at end of file
diff --git a/tests/compute/enum-conversion2.slang.expected.txt b/tests/compute/enum-conversion2.slang.expected.txt
new file mode 100644
index 000000000..94ebaf900
--- /dev/null
+++ b/tests/compute/enum-conversion2.slang.expected.txt
@@ -0,0 +1,4 @@
+1
+2
+3
+4
diff --git a/tests/diagnostics/enum-implicit-conversion.slang.expected b/tests/diagnostics/enum-implicit-conversion.slang.expected
index 7564e0aa4..1fc0c3dc6 100644
--- a/tests/diagnostics/enum-implicit-conversion.slang.expected
+++ b/tests/diagnostics/enum-implicit-conversion.slang.expected
@@ -1,6 +1,7 @@
result code = -1
standard error = {
tests/diagnostics/enum-implicit-conversion.slang(27): error 30019: expected an expression of type 'Color', got 'int'
+tests/diagnostics/enum-implicit-conversion.slang(27): note: explicit conversion from 'int' to 'Color' is possible
tests/diagnostics/enum-implicit-conversion.slang(34): error 30019: expected an expression of type 'int', got 'Color'
tests/diagnostics/enum-implicit-conversion.slang(34): note: explicit conversion from 'Color' to 'int' is possible
tests/diagnostics/enum-implicit-conversion.slang(35): error 30019: expected an expression of type 'uint', got 'Color'
diff --git a/tests/diagnostics/interface-requirement-not-satisfied.slang b/tests/diagnostics/interface-requirement-not-satisfied.slang
new file mode 100644
index 000000000..b9ab7e3be
--- /dev/null
+++ b/tests/diagnostics/interface-requirement-not-satisfied.slang
@@ -0,0 +1,12 @@
+// interface-requirement-not-satisfied.slang
+
+//DIAGNOSTIC_TEST:SIMPLE:
+
+interface IFoo
+{
+ void bar();
+}
+
+struct T : IFoo
+{
+}
diff --git a/tests/diagnostics/interface-requirement-not-satisfied.slang.expected b/tests/diagnostics/interface-requirement-not-satisfied.slang.expected
new file mode 100644
index 000000000..b600a5e21
--- /dev/null
+++ b/tests/diagnostics/interface-requirement-not-satisfied.slang.expected
@@ -0,0 +1,6 @@
+result code = -1
+standard error = {
+tests/diagnostics/interface-requirement-not-satisfied.slang(10): error 38100: type 'T' does not provide required interface member 'bar'
+}
+standard output = {
+}