mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
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.
110 lines
3.0 KiB
JavaScript
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']
|
|
});
|
|
});
|