@@ -7700,8 +7700,10 @@ mod tests {
77007700 minify_test(".order6 { order: calc(0.5) }", ".order6{order:1}");
77017701 minify_test(".order7 { order: calc(-5 * 0) }", ".order7{order:0}");
77027702
7703- // Test Infinity
7704- // https://drafts.csswg.org/css-values-4/#calc-ieee
7703+ // Test Infinity <integer>
7704+ // i32: calc(1/0) = 2147483647 = 2^31 - 1
7705+ // i32: calc(-1/0) = -2147483648 = -2^31
7706+ // Spec: https://drafts.csswg.org/css-values-4/#calc-ieee
77057707 minify_test(
77067708 ".infinity1 { z-index: calc(9/0) }",
77077709 ".infinity1{z-index:calc(1/0)}",
@@ -7727,7 +7729,7 @@ mod tests {
77277729 ".infinity3-1{z-index:0}",
77287730 );
77297731 minify_test(
7730- ".infinity3-1 { z-index: calc(-0/0) }",
7732+ ".infinity3-1 { z-index: calc(-0/0) }", // NaN
77317733 ".infinity3-1{z-index:0}",
77327734 );
77337735 minify_test(
@@ -7762,6 +7764,46 @@ mod tests {
77627764 ".infinity10 { z-index: calc(infinity + infinity) }",
77637765 ".infinity10{z-index:calc(1/0)}",
77647766 );
7767+
7768+ minify_test(
7769+ ".infinity11-0 { z-index: calc(2147483 - 1) }",
7770+ ".infinity11-0{z-index:2147482}",
7771+ );
7772+ // TODO: Using the double type (f64) in Chrome can prevent precision loss.
7773+ // We currently align with Firefox, 2147483647 - 65 = 2147483520
7774+ minify_test(
7775+ ".infinity11-1 { z-index: calc(2147483647 - 65) }",
7776+ ".infinity11-1{z-index:2147483520}", // Chrome: 2147483582, Firefox: 2147483520
7777+ );
7778+ minify_test(
7779+ ".infinity11-2 { z-index: calc(-2147483647 + 1) }",
7780+ ".infinity11-2{z-index:calc(-1/0)}", // Chrome: -2147483646, Firefox: -2147483648
7781+ );
7782+ minify_test(
7783+ ".infinity11-3 { z-index: calc(2147483647 + 1) }",
7784+ ".infinity11-3{z-index:calc(1/0)}", // 2147483647
7785+ );
7786+ minify_test(
7787+ ".infinity11-4 { z-index: calc(-2147483647 - 1) }",
7788+ ".infinity11-4{z-index:calc(-1/0)}", // -2147483648
7789+ );
7790+ minify_test(
7791+ ".infinity11-5 { z-index: calc(2147483646 + infinity) }",
7792+ ".infinity11-5{z-index:calc(1/0)}", // 2147483647
7793+ );
7794+ minify_test(
7795+ ".infinity11-6 { z-index: calc(2147483647 + 2 - 1) }",
7796+ ".infinity11-6{z-index:calc(1/0)}", // 2147483647
7797+ );
7798+ minify_test(
7799+ ".infinity12-1 { z-index: calc(calc(1/0) + infinity) }",
7800+ ".infinity12-1{z-index:calc(1/0)}",
7801+ );
7802+ minify_test(
7803+ ".infinity12-2 { z-index: calc(calc(1/0) - infinity) }",
7804+ ".infinity12-2{z-index:0}",
7805+ );
7806+
77657807 minify_test(
77667808 ".infinity6 { order: calc(infinity / infinity) }",
77677809 ".infinity6{order:0}",
@@ -7801,7 +7843,7 @@ mod tests {
78017843 // ".orphans4{orphans:-5}",
78027844 // );
78037845
7804- // Test repeat() = <integer [1,∞]>
7846+ // Test infinity repeat() = <integer [1,∞]>
78057847 minify_test(
78067848 ".grid1 { grid-template-rows: repeat( calc(0.5), 1fr ); }",
78077849 ".grid1{grid-template-rows:repeat(1,1fr)}",
@@ -7818,6 +7860,7 @@ mod tests {
78187860 ".grid-mix1 { grid-template-rows: repeat( calc(0.5 * 5 - 1), minmax(calc(100px * 2), 1fr) ); }",
78197861 ".grid-mix1{grid-template-rows:repeat(2,minmax(200px,1fr))}",
78207862 );
7863+ // end infinity
78217864
78227865 minify_test(".mix1 { z-index: calc(10 + 5 * 2 - 3) }", ".mix1{z-index:17}");
78237866 minify_test(".mix2 { z-index: calc(10 * 2 + 5) }", ".mix2{z-index:25}");
0 commit comments