LCOV - code coverage report
Current view: top level - test/unittests/asmjs - switch-logic-unittest.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 70 70 100.0 %
Date: 2017-10-20 Functions: 25 27 92.6 %

          Line data    Source code
       1             : // Copyright 2016 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/asmjs/switch-logic.h"
       6             : #include "test/unittests/test-utils.h"
       7             : 
       8             : namespace v8 {
       9             : namespace internal {
      10             : namespace wasm {
      11          10 : class SwitchLogicTest : public TestWithZone {};
      12             : 
      13          11 : void CheckNodeValues(CaseNode* node, int begin, int end) {
      14          11 :   CHECK_EQ(node->begin, begin);
      15          11 :   CHECK_EQ(node->end, end);
      16          11 : }
      17             : 
      18       13159 : TEST_F(SwitchLogicTest, Single_Table_Test) {
      19           1 :   ZoneVector<int> values(zone());
      20           2 :   values.push_back(14);
      21           2 :   values.push_back(12);
      22           2 :   values.push_back(15);
      23           2 :   values.push_back(19);
      24           2 :   values.push_back(18);
      25           2 :   values.push_back(16);
      26           1 :   CaseNode* root = OrderCases(&values, zone());
      27           1 :   CHECK_NULL(root->left);
      28           1 :   CHECK_NULL(root->right);
      29           1 :   CheckNodeValues(root, 12, 19);
      30           1 : }
      31             : 
      32       13159 : TEST_F(SwitchLogicTest, Balanced_Tree_Test) {
      33           1 :   ZoneVector<int> values(zone());
      34           2 :   values.push_back(5);
      35           2 :   values.push_back(1);
      36           2 :   values.push_back(6);
      37           2 :   values.push_back(9);
      38           2 :   values.push_back(-4);
      39           1 :   CaseNode* root = OrderCases(&values, zone());
      40           1 :   CheckNodeValues(root, 5, 5);
      41           1 :   CheckNodeValues(root->left, -4, -4);
      42           1 :   CHECK_NULL(root->left->left);
      43           1 :   CheckNodeValues(root->left->right, 1, 1);
      44           1 :   CHECK_NULL(root->left->right->left);
      45           1 :   CHECK_NULL(root->left->right->right);
      46           1 :   CheckNodeValues(root->right, 6, 6);
      47           1 :   CHECK_NULL(root->right->left);
      48           1 :   CheckNodeValues(root->right->right, 9, 9);
      49           1 :   CHECK_NULL(root->right->right->left);
      50           1 :   CHECK_NULL(root->right->right->right);
      51           1 : }
      52             : 
      53       13159 : TEST_F(SwitchLogicTest, Hybrid_Test) {
      54           1 :   ZoneVector<int> values(zone());
      55           2 :   values.push_back(1);
      56           2 :   values.push_back(2);
      57           2 :   values.push_back(3);
      58           2 :   values.push_back(4);
      59           2 :   values.push_back(7);
      60           2 :   values.push_back(10);
      61           2 :   values.push_back(11);
      62           2 :   values.push_back(12);
      63           2 :   values.push_back(13);
      64           2 :   values.push_back(16);
      65           1 :   CaseNode* root = OrderCases(&values, zone());
      66           1 :   CheckNodeValues(root, 7, 7);
      67           1 :   CheckNodeValues(root->left, 1, 4);
      68           1 :   CheckNodeValues(root->right, 10, 13);
      69           1 :   CheckNodeValues(root->right->right, 16, 16);
      70           1 : }
      71             : 
      72       13159 : TEST_F(SwitchLogicTest, Single_Case) {
      73           1 :   ZoneVector<int> values(zone());
      74           2 :   values.push_back(3);
      75           1 :   CaseNode* root = OrderCases(&values, zone());
      76           1 :   CheckNodeValues(root, 3, 3);
      77           1 :   CHECK_NULL(root->left);
      78           1 :   CHECK_NULL(root->right);
      79           1 : }
      80             : 
      81       13159 : TEST_F(SwitchLogicTest, Empty_Case) {
      82           1 :   ZoneVector<int> values(zone());
      83           1 :   CaseNode* root = OrderCases(&values, zone());
      84           1 :   CHECK_NULL(root);
      85           1 : }
      86             : 
      87             : }  // namespace wasm
      88             : }  // namespace internal
      89        7893 : }  // namespace v8

Generated by: LCOV version 1.10