@@ -31,8 +31,8 @@ contract QuantHarness {
3131 return q.encode (value);
3232 }
3333
34- function encodeLossless (Quant q , uint256 value ) external pure returns (uint256 ) {
35- return q.encodeLossless (value);
34+ function encode (Quant q , uint256 value , bool precise ) external pure returns (uint256 ) {
35+ return q.encode (value, precise );
3636 }
3737
3838 function decode (Quant q , uint256 encoded ) external pure returns (uint256 ) {
@@ -113,23 +113,30 @@ contract UintQuantizationLibSmokeTest is Test {
113113 }
114114
115115 // -------------------------------------------------------------------------
116- // encodeLossless : overflow and alignment reverts
116+ // encode (precise=true) : overflow and alignment reverts
117117 // -------------------------------------------------------------------------
118118
119- function test_encodeLossless_overflow_reverts () public {
119+ function test_encodePrecise_overflow_reverts () public {
120120 Quant q = harness.create (SHIFT_8, BITS_8);
121121 uint256 m = harness.max (q);
122122 uint256 value = m + 1 ;
123123 vm.expectRevert (abi.encodeWithSelector (Overflow.selector , value, m));
124- harness.encodeLossless (q, value);
124+ harness.encode (q, value, true );
125125 }
126126
127- function test_encodeLossless_notAligned_reverts () public {
127+ function test_encodePrecise_notAligned_reverts () public {
128128 Quant q = harness.create (SHIFT_8, BITS_8);
129129 uint256 step = harness.stepSize (q); // 256
130130 uint256 value = step + 1 ; // 257, not aligned
131131 vm.expectRevert (abi.encodeWithSelector (NotAligned.selector , value, step));
132- harness.encodeLossless (q, value);
132+ harness.encode (q, value, true );
133+ }
134+
135+ function test_encodePrecise_aligned_succeeds () public view {
136+ Quant q = harness.create (SHIFT_8, BITS_8);
137+ uint256 step = harness.stepSize (q); // 256
138+ // 256 is aligned: encode(256, true) == 1
139+ assertEq (harness.encode (q, step, true ), 1 );
133140 }
134141
135142 // -------------------------------------------------------------------------
0 commit comments