166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved.
266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be
366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file.
466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('base.unittest.assertions');
866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('base.unittest.assertions', function() {
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  setup(function() {
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    global.rawAssertThrows = function(fn) {
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      try {
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        fn();
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      } catch (e) {
1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        return;
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      }
1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      throw new Error('Expected <' + fn + '> to throw');
1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    };
1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    global.rawAssertNotThrows = function(fn) {
2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      try {
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        fn();
2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      } catch (e) {
2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        throw new Error('Expected <' + fn + '> to not throw');
2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      }
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    };
2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  teardown(function() {
3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    global.rawAssertThrows = undefined;
3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    global.rawAssertNotThrows = undefined;
3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('assertTrue', function() {
3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertThrows(function() {
3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertTrue(false);
3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertNotThrows(function() {
3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertTrue(true);
4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('assertObjectEquals', function() {
4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertThrows(function() {
4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertObjectEquals({a: 1}, {a: 2});
4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertThrows(function() {
4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertObjectEquals({a: 1}, []);
4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertThrows(function() {
5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertObjectEquals({a: 1, b: {}}, {a: 1, c: {}, b: {}});
5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertNotThrows(function() {
5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertObjectEquals({}, {});
5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertNotThrows(function() {
5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertObjectEquals({a: 1}, {a: 1});
5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('assertThrows', function() {
6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertThrows(function() {
6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertThrows(function() {
6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      });
6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    rawAssertNotThrows(function() {
6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertThrows(function() {
6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        throw new Error('expected_error');
6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      });
7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    });
7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis});
73