library AudioContextTest;
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
import 'dart:html';
import 'dart:web_audio';

main() {

  useHtmlConfiguration();

  var isAudioContext =
      predicate((x) => x is AudioContext, 'is an AudioContext');

  test('constructorTest', () {
      var ctx = new AudioContext();
      expect(ctx, isNotNull);
      expect(ctx, isAudioContext);
  });
  test('createBuffer', () {
      var ctx = new AudioContext();
      ArrayBufferView arrayBufferView = new Float32Array.fromList([]);
      try {
        // Test that native overload is chosen correctly. Native implementation
        // should throw 'SYNTAX_ERR' DomException because the buffer is empty.
        AudioBuffer buffer = ctx.createBuffer(arrayBufferView.buffer, false);
      } catch (e) {
        expect(e.code, equals(DomException.SYNTAX_ERR));
      }
  });

  test('audioRenames', () {
    AudioContext context = new AudioContext();
    GainNode gainNode = context.createGain();
    gainNode.connect(context.destination, 0, 0);
    expect(gainNode is GainNode, isTrue);

    expect(context.createAnalyser() is AnalyserNode, isTrue);
    expect(context.createChannelMerger() is ChannelMergerNode, isTrue);
    expect(context.createChannelSplitter() is ChannelSplitterNode, isTrue);
    expect(context.createOscillator() is OscillatorNode, isTrue);
    expect(context.createPanner() is PannerNode, isTrue);
    expect(context.createScriptProcessor(4096) is ScriptProcessorNode, isTrue);
  });
}
