onnxruntime/js/web/test/unittests/backends/webgl/test-glsl-function-inliner.ts
Yulong Wang af21a04977
[js] upgrade async@3.2.3 /js/ (#11421)
* [js] upgrade async@3.2.3 /js/

* format code
2022-05-03 23:41:36 -07:00

68 lines
1.8 KiB
TypeScript

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import {expect} from 'chai';
import {replaceInlines} from '../../../../lib/onnxjs/backends/webgl/glsl-function-inliner';
import {Logger} from '../../../../lib/onnxjs/instrument';
function removeWhiteSpace(s: string): string {
return s.replace(/\s+/gm, ' ');
}
describe('#UnitTest# - FunctionInliner', () => {
it('replaces inline and removes original declaration', () => {
const script = `
precision mediump float;
varying vec4 vColor;
@inline
float
_and(
float a,
float b
) {
bool aBool = bool(a);
bool bBool = bool(b);
return float(aBool ^^ bBool);
}
@inline float _less(float a, float b) { return float(a < b); }
void main(void) {
float m = 2.3;
float l;
l = _less(2.0, 3.4);
float k = _and(1.2, -2.1);
gl_FragColor = vColor;
}
`;
const result = replaceInlines(script);
const expected = `
precision mediump float;
varying vec4 vColor;
void main(void) {
float m = 2.3;
float l;
{
float a = 2.0;
float b = 3.4;
l = float(a < b);
}
float k;
{
float a = 1.2;
float b = -2.1;
bool aBool = bool(a);
bool bBool = bool(b);
k = float(aBool ^^ bBool);
}
gl_FragColor = vColor;
}
`;
const result2 = removeWhiteSpace(result);
const expected2 = removeWhiteSpace(expected);
Logger.verbose(`Result after cleanup:\n${result2}`);
Logger.verbose(`Expected after cleanup:\n${expected2}`);
expect(result2).to.equal(expected2);
});
});