@@ -47,11 +47,27 @@ describe('ConfidentialFungibleTokenWrapper', function () {
4747 const wrappedBalanceHandle = await this . wrapper . confidentialBalanceOf ( this . holder . address ) ;
4848 await expect (
4949 fhevm . userDecryptEuint ( FhevmType . euint64 , wrappedBalanceHandle , this . wrapper . target , this . holder ) ,
50- ) . to . eventually . equal ( ethers . parseUnits ( '100' , 9 ) ) ;
50+ ) . to . eventually . equal ( ethers . parseUnits ( '100' , 6 ) ) ;
51+ } ) ;
52+
53+ it ( 'with value less than rate' , async function ( ) {
54+ const amountToWrap = ethers . parseUnits ( '100' , 8 ) ;
55+
56+ if ( viaCallback ) {
57+ await this . token . connect ( this . holder ) . transferAndCall ( this . wrapper , amountToWrap ) ;
58+ } else {
59+ await this . wrapper . connect ( this . holder ) . wrap ( this . holder . address , amountToWrap ) ;
60+ }
61+
62+ await expect ( this . token . balanceOf ( this . holder ) ) . to . eventually . equal ( ethers . parseUnits ( '1000' , 18 ) ) ;
63+ const wrappedBalanceHandle = await this . wrapper . balanceOf ( this . holder . address ) ;
64+ await expect (
65+ fhevm . userDecryptEuint ( FhevmType . euint64 , wrappedBalanceHandle , this . wrapper . target , this . holder ) ,
66+ ) . to . eventually . equal ( 0 ) ;
5167 } ) ;
5268
5369 it ( 'with non-multiple of rate' , async function ( ) {
54- const amountToWrap = ethers . parseUnits ( '101' , 8 ) ;
70+ const amountToWrap = ethers . parseUnits ( '101' , 11 ) ;
5571
5672 if ( viaCallback ) {
5773 await this . token . connect ( this . holder ) . transferAndCall ( this . wrapper , amountToWrap ) ;
@@ -60,7 +76,7 @@ describe('ConfidentialFungibleTokenWrapper', function () {
6076 }
6177
6278 await expect ( this . token . balanceOf ( this . holder ) ) . to . eventually . equal (
63- ethers . parseUnits ( '1000' , 18 ) - ethers . parseUnits ( '10' , 9 ) ,
79+ ethers . parseUnits ( '1000' , 18 ) - ethers . parseUnits ( '10' , 12 ) ,
6480 ) ;
6581 const wrappedBalanceHandle = await this . wrapper . confidentialBalanceOf ( this . holder . address ) ;
6682 await expect (
@@ -84,7 +100,7 @@ describe('ConfidentialFungibleTokenWrapper', function () {
84100 const wrappedBalanceHandle = await this . wrapper . confidentialBalanceOf ( this . recipient . address ) ;
85101 await expect (
86102 fhevm . userDecryptEuint ( FhevmType . euint64 , wrappedBalanceHandle , this . wrapper . target , this . recipient ) ,
87- ) . to . eventually . equal ( ethers . parseUnits ( '100' , 9 ) ) ;
103+ ) . to . eventually . equal ( ethers . parseUnits ( '100' , 6 ) ) ;
88104 } ) ;
89105
90106 it ( 'from unauthorized caller' , async function ( ) {
@@ -104,10 +120,11 @@ describe('ConfidentialFungibleTokenWrapper', function () {
104120 } ) ;
105121
106122 it ( 'less than balance' , async function ( ) {
107- const withdrawalAmount = ethers . parseUnits ( '10' , 9 ) ;
108- const input = fhevm . createEncryptedInput ( this . wrapper . target , this . holder . address ) ;
109- input . add64 ( withdrawalAmount ) ;
110- const encryptedInput = await input . encrypt ( ) ;
123+ const withdrawalAmount = ethers . parseUnits ( '10' , 6 ) ;
124+ const encryptedInput = await fhevm
125+ . createEncryptedInput ( this . wrapper . target , this . holder . address )
126+ . add64 ( withdrawalAmount )
127+ . encrypt ( ) ;
111128
112129 await this . wrapper
113130 . connect ( this . holder )
@@ -122,7 +139,7 @@ describe('ConfidentialFungibleTokenWrapper', function () {
122139 await fhevm . awaitDecryptionOracle ( ) ;
123140
124141 await expect ( this . token . balanceOf ( this . holder ) ) . to . eventually . equal (
125- withdrawalAmount * 10n ** 9n + ethers . parseUnits ( '900' , 18 ) ,
142+ withdrawalAmount * 10n ** 12n + ethers . parseUnits ( '900' , 18 ) ,
126143 ) ;
127144 } ) ;
128145
@@ -175,10 +192,11 @@ describe('ConfidentialFungibleTokenWrapper', function () {
175192 } ) ;
176193
177194 it ( 'via an approved operator' , async function ( ) {
178- const withdrawalAmount = ethers . parseUnits ( '100' , 9 ) ;
179- const input = fhevm . createEncryptedInput ( this . wrapper . target , this . operator . address ) ;
180- input . add64 ( withdrawalAmount ) ;
181- const encryptedInput = await input . encrypt ( ) ;
195+ const withdrawalAmount = ethers . parseUnits ( '100' , 6 ) ;
196+ const encryptedInput = await fhevm
197+ . createEncryptedInput ( this . wrapper . target , this . operator . address )
198+ . add64 ( withdrawalAmount )
199+ . encrypt ( ) ;
182200
183201 await this . wrapper . connect ( this . holder ) . setOperator ( this . operator . address , Math . round ( Date . now ( ) / 1000 ) + 1000 ) ;
184202
@@ -232,16 +250,16 @@ describe('ConfidentialFungibleTokenWrapper', function () {
232250
233251 describe ( 'Initialization' , function ( ) {
234252 describe ( 'decimals' , function ( ) {
235- it ( 'when underlying has 9 decimals' , async function ( ) {
236- const token = await ethers . deployContract ( 'ERC20Mock' , [ 'Public Token' , 'PT' , 9 ] ) ;
253+ it ( 'when underlying has 6 decimals' , async function ( ) {
254+ const token = await ethers . deployContract ( 'ERC20Mock' , [ 'Public Token' , 'PT' , 6 ] ) ;
237255 const wrapper = await ethers . deployContract ( 'ConfidentialFungibleTokenERC20WrapperMock' , [
238256 token ,
239257 name ,
240258 symbol ,
241259 uri ,
242260 ] ) ;
243261
244- await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 9 ) ;
262+ await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 6 ) ;
245263 await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 1 ) ;
246264 } ) ;
247265
@@ -254,20 +272,20 @@ describe('ConfidentialFungibleTokenWrapper', function () {
254272 uri ,
255273 ] ) ;
256274
257- await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 9 ) ;
258- await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 10n ** 9n ) ;
275+ await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 6 ) ;
276+ await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 10n ** 12n ) ;
259277 } ) ;
260278
261- it ( 'when underlying has less than 9 decimals' , async function ( ) {
262- const token = await ethers . deployContract ( 'ERC20Mock' , [ 'Public Token' , 'PT' , 8 ] ) ;
279+ it ( 'when underlying has less than 6 decimals' , async function ( ) {
280+ const token = await ethers . deployContract ( 'ERC20Mock' , [ 'Public Token' , 'PT' , 4 ] ) ;
263281 const wrapper = await ethers . deployContract ( 'ConfidentialFungibleTokenERC20WrapperMock' , [
264282 token ,
265283 name ,
266284 symbol ,
267285 uri ,
268286 ] ) ;
269287
270- await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 8 ) ;
288+ await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 4 ) ;
271289 await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 1 ) ;
272290 } ) ;
273291
@@ -280,8 +298,8 @@ describe('ConfidentialFungibleTokenWrapper', function () {
280298 uri ,
281299 ] ) ;
282300
283- await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 9 ) ;
284- await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 10n ** 9n ) ;
301+ await expect ( wrapper . decimals ( ) ) . to . eventually . equal ( 6 ) ;
302+ await expect ( wrapper . rate ( ) ) . to . eventually . equal ( 10n ** 12n ) ;
285303 } ) ;
286304
287305 it ( 'when decimals are over `type(uint8).max`' , async function ( ) {
0 commit comments