Home | History | Annotate | Download | only in kde
      1 // Copyright 2013 the V8 project authors. All rights reserved.
      2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions
      6 // are met:
      7 // 1.  Redistributions of source code must retain the above copyright
      8 //     notice, this list of conditions and the following disclaimer.
      9 // 2.  Redistributions in binary form must reproduce the above copyright
     10 //     notice, this list of conditions and the following disclaimer in the
     11 //     documentation and/or other materials provided with the distribution.
     12 //
     13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
     14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
     17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 
     24 description("KDE JS Test");
     25 function kdeShouldBe(a, b, c)
     26 {
     27   if ( a == b )
     28    debug(c+" .......... Passed");
     29   else
     30    debug(c+" .......... Failed");
     31 }
     32 
     33 function testThrow()
     34 {
     35   var caught = false;
     36   try {
     37     throw 99;
     38   } catch (e) {
     39     caught = true;
     40   }
     41   kdeShouldBe(caught, true, "testing throw()");
     42 }
     43 
     44 // same as above but lacking a semicolon after throw
     45 function testThrow2()
     46 {
     47   var caught = false;
     48   try {
     49     throw 99
     50   } catch (e) {
     51     caught = true;
     52   }
     53   kdeShouldBe(caught, true, "testing throw()");
     54 }
     55 
     56 function testReferenceError()
     57 {
     58   var err = "noerror";
     59   var caught = false;
     60   try {
     61     var dummy = nonexistant; // throws reference error
     62   } catch (e) {
     63     caught = true;
     64     err = e.name;
     65   }
     66   // test err
     67   kdeShouldBe(caught, true, "ReferenceError");
     68 }
     69 
     70 function testFunctionErrorHelper()
     71 {
     72    var a = b;  // throws reference error
     73 }
     74 
     75 function testFunctionError()
     76 {
     77   var caught = false;
     78   try {
     79     testFunctionErrorHelper();
     80   } catch (e) {
     81     caught = true;
     82   }
     83   kdeShouldBe(caught, true, "error propagation in functions");
     84 }
     85 
     86 function testMathFunctionError()
     87 {
     88   var caught = false;
     89   try {
     90     Math();
     91   } catch (e) {
     92     debug("catch");
     93     caught = true;
     94   } finally {
     95     debug("finally");
     96   }
     97   kdeShouldBe(caught, true, "Math() error");
     98 }
     99 
    100 function testWhileAbortion()
    101 {
    102   var caught = 0;
    103   try {
    104     while (a=b, 1) {  // "endless error" in condition
    105       ;
    106     }
    107   } catch (e) {
    108     caught++;
    109   }
    110 
    111   try {
    112     while (1) {
    113       var a = b; // error in body
    114     }
    115   } catch (e) {
    116     caught++;
    117   }
    118   kdeShouldBe(caught, 2, "Abort while() on error");
    119 }
    120 
    121 debug("Except a lot of errors. They should all be caught and lead to PASS");
    122 testThrow();
    123 testThrow2();
    124 testReferenceError();
    125 testFunctionError();
    126 testMathFunctionError();
    127 testWhileAbortion();
    128