gpu.js/test/internal/backend/gl-kernel.js
Robert Plummer ee7baf70ba fix: Array handling (2,3,4) for webgl2 & webgl1 (headlessgl next)
fix: Float handling
feat: added `optimizeFloatMemory` to better exemplify what it does and replace `floatTextures` and its voodoo in webgl2
feat: end to end strong type detection
Note: added a bunch of TODO's this is just a good resting point.
2019-04-11 19:41:58 -04:00

110 lines
3.0 KiB
JavaScript

const { assert, test, module: describe, only } = require('qunit');
const { GLKernel } = require(process.cwd() + '/src');
describe('GLKernel');
test('nativeFunctionArguments() parse simple function', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(vec2 longName) {
return vec2(1, 1);
}`);
assert.deepEqual(result, {
argumentNames: ['longName'],
argumentTypes: ['Array(2)']
});
});
test('nativeFunctionArguments() parse simple function with argument that has number', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(vec2 longName123) {
return vec2(1, 1);
}`);
assert.deepEqual(result, {
argumentNames: ['longName123'],
argumentTypes: ['Array(2)']
});
});
test('nativeFunctionArguments() parse simple function, multiple arguments', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(vec3 a,vec3 b,float c) {
return vec2(1, 1);
}`);
assert.deepEqual(result, {
argumentNames: ['a', 'b', 'c'],
argumentTypes: ['Array(3)', 'Array(3)', 'Number']
});
});
test('nativeFunctionArguments() parse simple function, multiple arguments with comments', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(vec3 a /* vec4 b */,vec2 c, /* vec4 d */ float e) {
return vec2(1, 1);
}`);
assert.deepEqual(result, {
argumentNames: ['a', 'c', 'e'],
argumentTypes: ['Array(3)', 'Array(2)', 'Number']
});
});
test('nativeFunctionArguments() parse simple function, multiple arguments on multi line with spaces', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(
vec4 a,
vec3 b,
float c
) {
vec3 delta = a - b;
}`);
assert.deepEqual(result, {
argumentNames: ['a', 'b', 'c'],
argumentTypes: ['Array(4)', 'Array(3)', 'Number']
});
});
test('nativeFunctionArguments() parse simple function, multiple arguments on multi line with spaces and multi-line-comments', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(
vec2 a,
/* test 1 */
vec3 b,
/* test 2 */
float c
/* test 3 */
) {
vec3 delta = a - b;
}`);
assert.deepEqual(result, {
argumentNames: ['a', 'b', 'c'],
argumentTypes: ['Array(2)', 'Array(3)', 'Number']
});
});
test('nativeFunctionArguments() parse simple function, multiple arguments on multi line with spaces and in-line-comments', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(
vec2 a, // test 1
vec4 b, // test 2
int c // test 3
) {
vec3 delta = a - b;
}`);
assert.deepEqual(result, {
argumentNames: ['a', 'b', 'c'],
argumentTypes: ['Array(2)', 'Array(4)', 'Integer']
});
});
test('nativeFunctionArguments() parse simple function that is cut short', () => {
const result = GLKernel.nativeFunctionArguments(`vec2 myFunction(
vec2 a,
vec3 b,
float c
)`);
assert.deepEqual(result, {
argumentNames: ['a', 'b', 'c'],
argumentTypes: ['Array(2)', 'Array(3)', 'Number']
});
});