@@ -396,17 +396,32 @@ describe('UFragmentsPolicy:CurveParameters', async function () {
396
396
} = await waffle . loadFixture ( mockedUpgradablePolicy ) )
397
397
} )
398
398
399
- describe ( 'when rebaseFunctionGrowth is more than 0' , async function ( ) {
399
+ describe ( 'when rebaseFunctionRebasePositiveGrowth is more than 0' , async function ( ) {
400
400
it ( 'should setRebaseFunctionGrowth' , async function ( ) {
401
- await uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionGrowth ( '42000000000000000000' )
402
- expect ( await uFragmentsPolicy . rebaseFunctionGrowth ( ) ) . to . eq ( '42000000000000000000' )
401
+ await uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionPositiveGrowth ( '42000000000000000000' )
402
+ expect ( await uFragmentsPolicy . rebaseFunctionPositiveGrowth ( ) ) . to . eq ( '42000000000000000000' )
403
403
} )
404
404
} )
405
405
406
- describe ( 'when rebaseFunctionGrowth is less than 0' , async function ( ) {
406
+ describe ( 'when rebaseFunctionRebasePositiveGrowth is less than 0' , async function ( ) {
407
407
it ( 'should fail' , async function ( ) {
408
408
await expect (
409
- uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionGrowth ( - 1 ) ,
409
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionPositiveGrowth ( - 1 ) ,
410
+ ) . to . be . reverted
411
+ } )
412
+ } )
413
+
414
+ describe ( 'when rebaseFunctionRebaseNegativeGrowth is more than 0' , async function ( ) {
415
+ it ( 'should setRebaseFunctionGrowth' , async function ( ) {
416
+ await uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionNegativeGrowth ( '42000000000000000000' )
417
+ expect ( await uFragmentsPolicy . rebaseFunctionNegativeGrowth ( ) ) . to . eq ( '42000000000000000000' )
418
+ } )
419
+ } )
420
+
421
+ describe ( 'when rebaseFunctionRebaseNegativeGrowth is less than 0' , async function ( ) {
422
+ it ( 'should fail' , async function ( ) {
423
+ await expect (
424
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionNegativeGrowth ( - 1 ) ,
410
425
) . to . be . reverted
411
426
} )
412
427
} )
@@ -448,82 +463,6 @@ describe('UFragmentsPolicy:CurveParameters', async function () {
448
463
} )
449
464
} )
450
465
451
- describe ( 'UFragments:setRebaseFunctionGrowth:accessControl' , function ( ) {
452
- before ( 'setup UFragmentsPolicy contract' , async ( ) => {
453
- ; ( {
454
- deployer,
455
- user,
456
- orchestrator,
457
- mockUFragments,
458
- mockMarketOracle,
459
- mockCpiOracle,
460
- uFragmentsPolicy,
461
- } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
462
- } )
463
-
464
- it ( 'should be callable by owner' , async function ( ) {
465
- await expect ( uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionGrowth ( 1 ) )
466
- . to . not . be . reverted
467
- } )
468
-
469
- it ( 'should NOT be callable by non-owner' , async function ( ) {
470
- await expect ( uFragmentsPolicy . connect ( user ) . setRebaseFunctionGrowth ( 1 ) ) . to
471
- . be . reverted
472
- } )
473
- } )
474
-
475
- describe ( 'UFragments:setRebaseFunctionLowerPercentage:accessControl' , function ( ) {
476
- before ( 'setup UFragmentsPolicy contract' , async ( ) => {
477
- ; ( {
478
- deployer,
479
- user,
480
- orchestrator,
481
- mockUFragments,
482
- mockMarketOracle,
483
- mockCpiOracle,
484
- uFragmentsPolicy,
485
- } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
486
- } )
487
-
488
- it ( 'should be callable by owner' , async function ( ) {
489
- await expect (
490
- uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionLowerPercentage ( - 1 ) ,
491
- ) . to . not . be . reverted
492
- } )
493
-
494
- it ( 'should NOT be callable by non-owner' , async function ( ) {
495
- await expect (
496
- uFragmentsPolicy . connect ( user ) . setRebaseFunctionLowerPercentage ( - 1 ) ,
497
- ) . to . be . reverted
498
- } )
499
- } )
500
-
501
- describe ( 'UFragments:setRebaseFunctionUpperPercentage:accessControl' , function ( ) {
502
- before ( 'setup UFragmentsPolicy contract' , async ( ) => {
503
- ; ( {
504
- deployer,
505
- user,
506
- orchestrator,
507
- mockUFragments,
508
- mockMarketOracle,
509
- mockCpiOracle,
510
- uFragmentsPolicy,
511
- } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
512
- } )
513
-
514
- it ( 'should be callable by owner' , async function ( ) {
515
- await expect (
516
- uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionUpperPercentage ( 1 ) ,
517
- ) . to . not . be . reverted
518
- } )
519
-
520
- it ( 'should NOT be callable by non-owner' , async function ( ) {
521
- await expect (
522
- uFragmentsPolicy . connect ( user ) . setRebaseFunctionUpperPercentage ( 1 ) ,
523
- ) . to . be . reverted
524
- } )
525
- } )
526
-
527
466
describe ( 'UFragmentsPolicy:setRebaseTimingParameters' , async function ( ) {
528
467
before ( 'setup UFragmentsPolicy contract' , async function ( ) {
529
468
; ( {
@@ -1053,7 +992,7 @@ describe('UFragmentsPolicy:Rebase', async function () {
1053
992
await mockExternalData ( INITIAL_RATE_2X , INITIAL_TARGET_RATE , 1000 )
1054
993
await uFragmentsPolicy
1055
994
. connect ( deployer )
1056
- . setRebaseFunctionGrowth ( '100' + '000000000000000000' )
995
+ . setRebaseFunctionPositiveGrowth ( '100' + '000000000000000000' )
1057
996
await increaseTime ( 60 )
1058
997
} )
1059
998
@@ -1073,7 +1012,7 @@ describe('UFragmentsPolicy:Rebase', async function () {
1073
1012
await mockExternalData ( 0 , INITIAL_TARGET_RATE , 1000 )
1074
1013
await uFragmentsPolicy
1075
1014
. connect ( deployer )
1076
- . setRebaseFunctionGrowth ( '75' + '000000000000000000' )
1015
+ . setRebaseFunctionNegativeGrowth ( '75' + '000000000000000000' )
1077
1016
await increaseTime ( 60 )
1078
1017
} )
1079
1018
@@ -1088,12 +1027,54 @@ describe('UFragmentsPolicy:Rebase', async function () {
1088
1027
} )
1089
1028
} )
1090
1029
1030
+ describe ( 'when normalizedRate is greater than ONE (positive rebase)' , function ( ) {
1031
+ beforeEach ( async function ( ) {
1032
+ await mockExternalData (
1033
+ INITIAL_RATE_30P_MORE ,
1034
+ INITIAL_TARGET_RATE ,
1035
+ 1000 ,
1036
+ )
1037
+ await uFragmentsPolicy
1038
+ . connect ( deployer )
1039
+ . setRebaseFunctionPositiveGrowth ( '50' + '000000000000000000' ) // Positive growth
1040
+ await increaseTime ( 60 )
1041
+ } )
1042
+
1043
+ it ( 'should compute positive rebase percentage correctly' , async function ( ) {
1044
+ const rebaseEvent = await parseRebaseEvent (
1045
+ uFragmentsPolicy . connect ( orchestrator ) . rebase ( ) ,
1046
+ )
1047
+ expect ( rebaseEvent . requestedSupplyAdjustment ) . to . eq ( 0 )
1048
+ } )
1049
+ } )
1050
+
1051
+ describe ( 'when normalizedRate is less than ONE (negative rebase)' , function ( ) {
1052
+ beforeEach ( async function ( ) {
1053
+ await mockExternalData (
1054
+ INITIAL_RATE_30P_LESS ,
1055
+ INITIAL_TARGET_RATE ,
1056
+ 1000 ,
1057
+ )
1058
+ await uFragmentsPolicy
1059
+ . connect ( deployer )
1060
+ . setRebaseFunctionNegativeGrowth ( '30' + '000000000000000000' ) // Negative growth
1061
+ await increaseTime ( 60 )
1062
+ } )
1063
+
1064
+ it ( 'should compute negative rebase percentage correctly' , async function ( ) {
1065
+ const rebaseEvent = await parseRebaseEvent (
1066
+ uFragmentsPolicy . connect ( orchestrator ) . rebase ( ) ,
1067
+ )
1068
+ expect ( rebaseEvent . requestedSupplyAdjustment ) . to . eq ( 0 )
1069
+ } )
1070
+ } )
1071
+
1091
1072
describe ( 'exponent less than -100' , function ( ) {
1092
1073
before ( async function ( ) {
1093
1074
await mockExternalData ( 0 , INITIAL_TARGET_RATE , 1000 )
1094
1075
await uFragmentsPolicy
1095
1076
. connect ( deployer )
1096
- . setRebaseFunctionGrowth ( '150' + '000000000000000000' )
1077
+ . setRebaseFunctionNegativeGrowth ( '150' + '000000000000000000' )
1097
1078
await increaseTime ( 60 )
1098
1079
} )
1099
1080
@@ -1328,3 +1309,99 @@ describe('UFragmentsPolicy:Rebase', async function () {
1328
1309
} )
1329
1310
} )
1330
1311
} )
1312
+
1313
+ describe ( 'UFragmentsPolicy:CurveParameters' , async function ( ) {
1314
+ before ( 'setup UFragmentsPolicy contract' , async function ( ) {
1315
+ ; ( {
1316
+ deployer,
1317
+ user,
1318
+ orchestrator,
1319
+ mockUFragments,
1320
+ mockMarketOracle,
1321
+ mockCpiOracle,
1322
+ uFragmentsPolicy,
1323
+ } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
1324
+ } )
1325
+
1326
+ describe ( 'when rebaseFunctionPositiveGrowth is more than 0' , async function ( ) {
1327
+ it ( 'should setRebaseFunctionPositiveGrowth' , async function ( ) {
1328
+ await uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionPositiveGrowth ( '42000000000000000000' )
1329
+ expect ( await uFragmentsPolicy . rebaseFunctionPositiveGrowth ( ) ) . to . eq ( '42000000000000000000' )
1330
+ } )
1331
+ } )
1332
+
1333
+ describe ( 'when rebaseFunctionNegativeGrowth is more than 0' , async function ( ) {
1334
+ it ( 'should setRebaseFunctionNegativeGrowth' , async function ( ) {
1335
+ await uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionNegativeGrowth ( '42000000000000000000' )
1336
+ expect ( await uFragmentsPolicy . rebaseFunctionNegativeGrowth ( ) ) . to . eq ( '42000000000000000000' )
1337
+ } )
1338
+ } )
1339
+
1340
+ describe ( 'when rebaseFunctionPositiveGrowth is less than 0' , async function ( ) {
1341
+ it ( 'should fail' , async function ( ) {
1342
+ await expect (
1343
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionPositiveGrowth ( - 1 ) ,
1344
+ ) . to . be . reverted
1345
+ } )
1346
+ } )
1347
+
1348
+ describe ( 'when rebaseFunctionNegativeGrowth is less than 0' , async function ( ) {
1349
+ it ( 'should fail' , async function ( ) {
1350
+ await expect (
1351
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionNegativeGrowth ( - 1 ) ,
1352
+ ) . to . be . reverted
1353
+ } )
1354
+ } )
1355
+ } )
1356
+
1357
+ describe ( 'UFragments:setRebaseFunctionPositiveGrowth:accessControl' , function ( ) {
1358
+ before ( 'setup UFragmentsPolicy contract' , async ( ) => {
1359
+ ; ( {
1360
+ deployer,
1361
+ user,
1362
+ orchestrator,
1363
+ mockUFragments,
1364
+ mockMarketOracle,
1365
+ mockCpiOracle,
1366
+ uFragmentsPolicy,
1367
+ } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
1368
+ } )
1369
+
1370
+ it ( 'should be callable by owner' , async function ( ) {
1371
+ await expect (
1372
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionPositiveGrowth ( 1 ) ,
1373
+ ) . to . not . be . reverted
1374
+ } )
1375
+
1376
+ it ( 'should NOT be callable by non-owner' , async function ( ) {
1377
+ await expect (
1378
+ uFragmentsPolicy . connect ( user ) . setRebaseFunctionPositiveGrowth ( 1 ) ,
1379
+ ) . to . be . reverted
1380
+ } )
1381
+ } )
1382
+
1383
+ describe ( 'UFragments:setRebaseFunctionNegativeGrowth:accessControl' , function ( ) {
1384
+ before ( 'setup UFragmentsPolicy contract' , async ( ) => {
1385
+ ; ( {
1386
+ deployer,
1387
+ user,
1388
+ orchestrator,
1389
+ mockUFragments,
1390
+ mockMarketOracle,
1391
+ mockCpiOracle,
1392
+ uFragmentsPolicy,
1393
+ } = await waffle . loadFixture ( mockedUpgradablePolicy ) )
1394
+ } )
1395
+
1396
+ it ( 'should be callable by owner' , async function ( ) {
1397
+ await expect (
1398
+ uFragmentsPolicy . connect ( deployer ) . setRebaseFunctionNegativeGrowth ( 1 ) ,
1399
+ ) . to . not . be . reverted
1400
+ } )
1401
+
1402
+ it ( 'should NOT be callable by non-owner' , async function ( ) {
1403
+ await expect (
1404
+ uFragmentsPolicy . connect ( user ) . setRebaseFunctionNegativeGrowth ( 1 ) ,
1405
+ ) . to . be . reverted
1406
+ } )
1407
+ } )
0 commit comments