// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

var test = require('prova');
var InspectableFunction = require('../../src/lib/inspectable-function');

test('apply()', function(t) {
  var thisObj = {};
  function f(a, b) {
    t.equal(a, 'A', 'Expected A');
    t.equal(b, 'B', 'Expected B');
    t.equal(this, thisObj, 'Expected this to be thisObj');
    return 'Ret';
  }
  var inspectFn = new InspectableFunction(f);
  var ret = inspectFn.apply(thisObj, ['A', 'B']);
  t.equal(ret, 'Ret', 'Expected Ret');
  t.end();
});

test('ArgumentInspector methods work', function(t) {
  function f(ctx, a, b, cb) {}
  var inspectFn = new InspectableFunction(f);
  t.ok(inspectFn.hasCallback(), 'has callback');
  t.ok(inspectFn.contains('a'));
  t.notOk(inspectFn.contains('z'));
  t.end();
});