tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

signed-zero.html (5275B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>CSS Values and Units Test: signed zero</title>
      4 <link rel="help" href="https://drafts.csswg.org/css-values-4/#math">
      5 <link rel="help" href="https://drafts.csswg.org/css-values-4/#calc-ieee">
      6 <link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
      7 <meta name="assert" content="Checks that a bunch of calculations produce the correct zero (+0 or -0)">
      8 
      9 <script src="/resources/testharness.js"></script>
     10 <script src="/resources/testharnessreport.js"></script>
     11 <script src="../support/numeric-testcommon.js"></script>
     12 <div id="target"></div>
     13 <script>
     14 function test_zero(expression, { is_negative }) {
     15  test_math_used(`sign(${expression})`, '0', { type: 'integer' });
     16  // to test zero sign, make it to negative infinity and clamp it between -1 and 1
     17  test_math_used(
     18    `clamp(-1, 1 / sign(${expression}), 1)`,
     19    (is_negative)? '-1' : '1',
     20    { type: 'integer' },
     21  );
     22 }
     23 
     24 test_zero('calc(-0)', { is_negative: true });
     25 test_zero('calc( 0)', { is_negative: false });
     26 
     27 test_zero('calc(-0 * -1)', { is_negative: false });
     28 test_zero('calc(-0 *  1)', { is_negative: true });
     29 test_zero('calc( 0 * -1)', { is_negative: true });
     30 test_zero('calc( 0 *  1)', { is_negative: false });
     31 
     32 test_zero('calc(-1 / -infinity)', { is_negative: false });
     33 test_zero('calc(-1 /  infinity)', { is_negative: true });
     34 test_zero('calc( 1 / -infinity)', { is_negative: true });
     35 test_zero('calc( 1 /  infinity)', { is_negative: false });
     36 
     37 test_zero('calc(-0 + -0)', { is_negative: true });
     38 test_zero('calc(-0 +  0)', { is_negative: false });
     39 test_zero('calc( 0 + -0)', { is_negative: false });
     40 test_zero('calc( 0 +  0)', { is_negative: false });
     41 
     42 test_zero('calc(-0 - -0)', { is_negative: false });
     43 test_zero('calc(-0 -  0)', { is_negative: true });
     44 test_zero('calc( 0 - -0)', { is_negative: false });
     45 test_zero('calc( 0 -  0)', { is_negative: false });
     46 
     47 test_zero('min(-0,  0)', { is_negative: true });
     48 test_zero('min( 0, -0)', { is_negative: true });
     49 
     50 test_zero('max(-0,  0)', { is_negative: false });
     51 test_zero('max( 0, -0)', { is_negative: false });
     52 
     53 test_zero('clamp(-0, -1, -0)', { is_negative: true });
     54 test_zero('clamp(-0, -0, -0)', { is_negative: true });
     55 test_zero('clamp(-0,  0, -0)', { is_negative: true });
     56 test_zero('clamp(-0,  1, -0)', { is_negative: true });
     57 
     58 test_zero('clamp(-0, -1, 0)', { is_negative: true });
     59 test_zero('clamp(-0, -0, 0)', { is_negative: true });
     60 test_zero('clamp(-0,  0, 0)', { is_negative: false });
     61 test_zero('clamp(-0,  1, 0)', { is_negative: false });
     62 
     63 test_zero('clamp(0, -1, -0)', { is_negative: false });
     64 test_zero('clamp(0, -0, -0)', { is_negative: false });
     65 test_zero('clamp(0,  0, -0)', { is_negative: false });
     66 test_zero('clamp(0,  1, -0)', { is_negative: false });
     67 
     68 test_zero('round(nearest, -1, infinity)', { is_negative: true });
     69 test_zero('round(nearest, -0, infinity)', { is_negative: true });
     70 test_zero('round(nearest,  0, infinity)', { is_negative: false });
     71 test_zero('round(nearest,  1, infinity)', { is_negative: false });
     72 
     73 test_zero('round(up, -1, infinity)', { is_negative: true });
     74 test_zero('round(up, -0, infinity)', { is_negative: true });
     75 test_zero('round(up,  0, infinity)', { is_negative: false });
     76 
     77 test_zero('round(down, -0, infinity)', { is_negative: true });
     78 test_zero('round(down,  0, infinity)', { is_negative: false });
     79 test_zero('round(down,  1, infinity)', { is_negative: false });
     80 
     81 test_zero('mod(-1, -1)', { is_negative: true });
     82 test_zero('mod(-1,  1)', { is_negative: false });
     83 test_zero('mod( 1, -1)', { is_negative: true });
     84 test_zero('mod( 1,  1)', { is_negative: false });
     85 
     86 test_zero('rem(-1, -1)', { is_negative: true });
     87 test_zero('rem(-1,  1)', { is_negative: true });
     88 test_zero('rem( 1, -1)', { is_negative: false });
     89 test_zero('rem( 1,  1)', { is_negative: false });
     90 
     91 test_zero('asin(-0)', { is_negative: true });
     92 test_zero('asin( 0)', { is_negative: false });
     93 
     94 test_zero('atan(-0)', { is_negative: true });
     95 test_zero('atan( 0)', { is_negative: false });
     96 
     97 test_zero('atan2(-0, 0)', { is_negative: true });
     98 test_zero('atan2(-0, 1)', { is_negative: true });
     99 test_zero('atan2(-0, infinity)', { is_negative: true });
    100 
    101 test_zero('atan2(0, 0)', { is_negative: false });
    102 test_zero('atan2(0, 1)', { is_negative: false });
    103 test_zero('atan2(0, infinity)', { is_negative: false });
    104 
    105 test_zero('atan2(-1, infinity)', { is_negative: true });
    106 test_zero('atan2( 1, infinity)', { is_negative: false });
    107 
    108 test_zero('pow(-infinity, -2)', { is_negative: false });
    109 test_zero('pow(-infinity, -1)', { is_negative: true });
    110 
    111 test_zero('pow(-0, 1)', { is_negative: true });
    112 test_zero('pow(-0, 2)', { is_negative: false });
    113 
    114 test_zero('pow(0, 1)', { is_negative: false });
    115 test_zero('pow(0, 2)', { is_negative: false });
    116 
    117 test_zero('pow(infinity, -2)', { is_negative: false });
    118 test_zero('pow(infinity, -1)', { is_negative: false });
    119 
    120 test_zero('sqrt(-0)', { is_negative: true });
    121 test_zero('sqrt( 0)', { is_negative: false });
    122 
    123 test_zero('hypot(-0)', { is_negative: false });
    124 test_zero('hypot( 0)', { is_negative: false });
    125 
    126 test_zero('exp(-infinity)', { is_negative: false });
    127 
    128 test_zero('abs(-0)', { is_negative: false });
    129 test_zero('abs( 0)', { is_negative: false });
    130 
    131 test_zero('sign(-0)', { is_negative: true });
    132 test_zero('sign( 0)', { is_negative: false });
    133 </script>