Reference Source Test

test/integration-test/src/Param/Type.test.js

import assert from 'assert';
import {find} from '../../util';

describe('test/Param/Type', ()=>{
  it('has array param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodArray');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'number[]');
  });

  it('has class param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodClass');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'TestParamClassInner');
  });

  it('has external param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodExternal');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'ArrayBuffer');
  });

  it('has function param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodFunction');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'function(x1: number, x2: string): boolean');
  });

  it('has generics param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodGenerics');
    assert.equal(doc.params.length, 3);

    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'Array<number>');

    assert.equal(doc.params[1].types.length, 1);
    assert.equal(doc.params[1].types[0], 'Map<number, string>');

    assert.equal(doc.params[2].types.length, 1);
    assert.equal(doc.params[2].types[0], 'Promise<number[], Error>');
  });

  it('has literal param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodLiteral');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'number');
  });

  it('has object param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodObject');
    assert.equal(doc.params.length, 2);

    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'Object');

    assert.equal(doc.params[1].types.length, 1);
    assert.equal(doc.params[1].types[0], 'number');
  });

  it('has record param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodRecord');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], '{x1: number, x2: string}');
  });

  it('has spread param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodSpread');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], '...number');
    assert.equal(doc.params[0].spread, true);
  });

  it('has typedef param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodTypedef');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 1);
    assert.equal(doc.params[0].types[0], 'TestTypeTypedefInner');
  });

  it('has union param', ()=>{
    const doc = find('longname', 'src/Param/Type.js~TestParam#methodUnion');
    assert.equal(doc.params.length, 1);
    assert.equal(doc.params[0].types.length, 2);
    assert.deepEqual(doc.params[0].types, ['number', 'string']);
  });
});