Skip to content

fix(price): Fix decimals conversion and offer list ratio to price con… #567

fix(price): Fix decimals conversion and offer list ratio to price con…

fix(price): Fix decimals conversion and offer list ratio to price con… #567

This check has been archived and is scheduled for deletion. Learn more about checks retention
GitHub Actions / Test Report succeeded Nov 9, 2023 in 0s

Test Report βœ…

Tests passed successfully

βœ…Β coverage-tests-report.json

364 tests were completed in 136s with 364 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
test/integration/cleaner.integration.test.ts 4βœ… 2s
test/integration/mangrove.integration.test.ts 4βœ… 8s
test/integration/mangroveToyENS.integration.test.ts 2βœ… 42s
test/integration/market.integration.test.ts 48βœ… 8s
test/integration/mgvtoken.integration.test.ts 12βœ… 418ms
test/integration/offermaker.integration.test.ts 16βœ… 2s
test/integration/restingOrder.integration.test.ts 8βœ… 2s
test/integration/semibook.integration.test.ts 44βœ… 9s
test/unit/configuration.unit.test.ts 4βœ… 2ms
test/unit/densityLib.unit.test.ts 5βœ… 176ms
test/unit/liquidityProvider.unit.test.ts 23βœ… 110ms
test/unit/market.unit.test.ts 21βœ… 36ms
test/unit/prettyPrint.unit.test.ts 3βœ… 38ms
test/unit/semibook.unit.test.ts 27βœ… 4ms
test/unit/tickLib.unit.test.ts 43βœ… 74ms
test/unit/tickPriceHelper.unit.test.ts 66βœ… 356ms
test/unit/trade.unit.test.ts 24βœ… 86ms
test/unit/tradeEventManagement.unit.test.ts 6βœ… 9ms
test/unit/unitCalculations.unit.test.ts 4βœ… 1ms

βœ…Β test/integration/cleaner.integration.test.ts

Cleaner integration tests suite
  βœ… clean asks book, offer is successfully taken, therefore cannot clean it
  βœ… clean failing offers collects bounty
  βœ… clean using different takers funds
  βœ… clean via callStatic for failing offers returns bounty

βœ…Β test/integration/mangrove.integration.test.ts

Mangrove integration tests suite getMarkets
  βœ… gets correct market info and updates with cashness
  βœ… has reverse lookup of address
  βœ… updates with mgvReader
Mangrove integration tests suite node utils
  βœ… can deal a test token

βœ…Β test/integration/mangroveToyENS.integration.test.ts

Mangrove functionality watch local addresses
  βœ… can start watching after ToyENS has been created
  βœ… can start watching before ToyENS has been created

βœ…Β test/integration/market.integration.test.ts

Market integration tests suite
  βœ… buying uses best price, with forceRoutingToMangroveOrder:false
  βœ… buying uses best price, with no forceRoutingToMangroveOrder
  βœ… crudely simulates market buy
  βœ… get minimum volume
  βœ… getOfferProvision agrees with calculateOfferProvision for asks with gasprice=100 
  βœ… getOfferProvision agrees with calculateOfferProvision for asks with gasprice=undefined 
  βœ… getOfferProvision agrees with calculateOfferProvision for bids with gasprice=100 
  βœ… getOfferProvision agrees with calculateOfferProvision for bids with gasprice=undefined 
  βœ… gets config
  βœ… gets OB
  βœ… max gasreq is added to gas estimates
  βœ… max gasreq returns a BigNumber, even if the book is empty
  βœ… mgvIntegrationTestUtils can post offers for asks
  βœ… mgvIntegrationTestUtils can post offers for bids
  βœ… returns correct data when taking offers
  βœ… selling uses best price
  βœ… subscribes
  βœ… updates OB
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=42 and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=42 and gasLimit=undefined
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=7000000 and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=7000000 and gasLimit=undefined
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=undefined and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=false with gasLowerBound=undefined and gasLimit=undefined
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=42 and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=42 and gasLimit=undefined
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=7000000 and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=7000000 and gasLimit=undefined
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=undefined and gasLimit=6500000
  βœ… uses expected gasLimit and forceRoutingToMangroveOrder=true with gasLowerBound=undefined and gasLimit=undefined
Market integration tests suite estimateVolumeTest
  βœ… return estimate value for buy
  βœ… return estimate value for sell
  βœ… return estimate value for sell
Market integration tests suite getMissingProvision
  βœ… can miss some provision
Market integration tests suite getOutboundInbound
  βœ… returns base as inbound and quote as outbound, when bids
  βœ… returns base as outbound and quote as inbound, when asks
  βœ… returns this.base as inbound and this.quote as outbound, when bids
  βœ… returns this.base as outbound and this.quote as inbound, when asks
Market integration tests suite isActive
  βœ… returns false, when asks and bids both not active
  βœ… returns false, when asks is active and bids is not active
  βœ… returns false, when asks is not active and bids is active
  βœ… returns true, when asks and bids are active
Market integration tests suite isLive
  βœ… returns false, when gives is negative
  βœ… returns true, when gives is positive
Market integration tests suite offerInfo
  βœ… return offer from ba semi book
  βœ… returns asks offer info
  βœ… returns bids offer info
Market integration tests suite Readonly mode
  βœ… can read book updates in readonly mode

βœ…Β test/integration/mgvtoken.integration.test.ts

MGV Token integration tests suite
  βœ… allowanceInfinite is false if allowance is 2^200 
  βœ… allowanceInfinite is true if allowance is 2^200 + 1 
  βœ… allowanceInfinite is true if infinite allowance 
  βœ… approve can be set to 0
  βœ… approve sets approved amount
  βœ… approveIfHigher sets when higher but not when lower
  βœ… approveIfNotInfinite creates approval TX only if finite
  βœ… converts
  βœ… get token from address
  βœ… has checksum addresses
  βœ… increaseApproval increases except when at max
  βœ… reads allowance and sets

βœ…Β test/integration/offermaker.integration.test.ts

OfferMaker integration test suite
  βœ… checks allowance for EOA provider
  βœ… checks allowance for onchain logic
  βœ… checks provision for EOA provider
  βœ… checks provision for onchain logic
  βœ… checks provision for onchain logic by calling provisionOf
  βœ… gets missing provision for eoa logic
  βœ… gets missing provision for onchain logic
OfferMaker integration test suite After setup
  βœ… approves signer for base transfer
  βœ… cancels offer
  βœ… fails, when trying to cancel a non-existing offer
  βœ… fails, when trying to create an offer on a closed market
  βœ… fails, when trying to push new offer without sufficient provision
  βœ… fails, when trying to update on a closed market
  βœ… OfferMaker updates offer
  βœ… pushes a new offer
  βœ… withdraws

βœ…Β test/integration/restingOrder.integration.test.ts

RestingOrder Resting order integration tests suite
  βœ… no resting order params, with forceRoutingToMangroveOrder:true
  βœ… no resting order params, with forceRoutingToMangroveOrder:true
  βœ… resting order with deadline and custom gasreq
  βœ… resting order, using existing offer
  βœ… simple resting order, with forceRoutingToMangroveOrder:false
  βœ… simple resting order, with forceRoutingToMangroveOrder:true
  βœ… simple resting order, with no forceRoutingToMangroveOrder
RestingOrder RestingOrder connectivity
  βœ… deploys and connects

βœ…Β test/integration/semibook.integration.test.ts

Semibook integration tests suite estimateVolume estimateVolume({to: buy}) - cache tests
  βœ… returns all given as residue when cache and offer list is empty
  βœ… returns correct estimate and residue when cache is empty and offer list is not
  βœ… returns correct estimate and residue when cache is partial and insufficient while offer list is sufficient
  βœ… returns correct estimate and residue when cache is partial and offer list is insufficient
Semibook integration tests suite estimateVolume estimateVolume({to: buy}) - calculation tests
  βœ… estimates all available volume when offer list has 1 offer with insufficient volume
  βœ… estimates all available volume when offer list has multiple offers with insufficient volume
  βœ… estimates volume and no residue when offer list has 1 offer with sufficient volume
  βœ… estimates volume and no residue when offer list has multiple offers which together have sufficient volume
  βœ… returns zero when given is zero
Semibook integration tests suite estimateVolume estimateVolume({to: sell}) - cache tests
  βœ… returns all given as residue when cache and offer list is empty
  βœ… returns correct estimate and residue when cache is empty and offer list is not
  βœ… returns correct estimate and residue when cache is partial and insufficient while offer list is sufficient
  βœ… returns correct estimate and residue when cache is partial and offer list is insufficient
Semibook integration tests suite estimateVolume estimateVolume({to: sell}) - calculation tests
  βœ… estimates all available volume when offer list has 1 offer with insufficient volume
  βœ… estimates all available volume when offer list has multiple offers with insufficient volume
  βœ… estimates volume and no residue when offer list has 1 offer with sufficient volume
  βœ… estimates volume and no residue when offer list has multiple offers which together have sufficient volume
  βœ… returns zero when given is zero
Semibook integration tests suite getBestInCache
  βœ… returns offer id 1, because cache gets synced even though market is created before offer
  βœ… returns offer id 1, because market made after offer
Semibook integration tests suite getConfig
  βœ… returns the config of a block as Mangrove.LocalConfig, when given blocknumber
  βœ… returns the config of a block, when given blocknumber
  βœ… returns the config of the latest block as Mangrove.LocalConfig, when given no blocknumber
  βœ… returns the config of the latest block as Mangrove.RawConfig, when given no blocknumber
Semibook integration tests suite getMaxGasReq
  βœ… finds max gasreq on both asks and bids side of market
  βœ… returns `undefined` when the semibook is empty
Semibook integration tests suite getMinimumVolume
  βœ… gets 1 unit if density is 0
  βœ… gets minimum volume
Semibook integration tests suite initialization options Option.desiredPrice
  βœ… does not fail if offer list is empty
  βœ… fetches all offers if all have a better price
  βœ… fetches only one chunk if no offers have a better price
  βœ… stops fetching when a chunk with a worse price has been fetched
Semibook integration tests suite initialization options Option.desiredVolume {to: buy}
  βœ… does not fail if offer list is empty
  βœ… fetches all offers if offer list has insufficient volume
  βœ… fetches only one chunk if it has sufficient volume
  βœ… stops fetching when sufficient volume has been fetched
Semibook integration tests suite initialization options Option.desiredVolume {to: sell}
  βœ… does not fail if offer list is empty
  βœ… fetches all offers if offer list has insufficient volume
  βœ… fetches only one chunk if it has sufficient volume
  βœ… stops fetching when sufficient volume has been fetched
Semibook integration tests suite offerInfo
  βœ… returns offer from cache, when offer is in cache
  βœ… returns offer from cache, when offer is in cache
  βœ… returns offer from contract, when offer is not in cache
  βœ… returns offer from contract, when offer is not in cache

βœ…Β test/unit/configuration.unit.test.ts

Configuration unit tests suite
  βœ… Adding token config does not affect existing config
  βœ… Can add token config of unknown token
  βœ… can read mangroveOrder config
  βœ… Reset of configuration reverts additions and changes

βœ…Β test/unit/densityLib.unit.test.ts

Density unit test suite
  βœ… test_density_convert_auto
  βœ… test_density_manual
  βœ… test_density_multiply_auto
  βœ… test_multiply_manual
  βœ… test_paramsTo96X32

βœ…Β test/unit/liquidityProvider.unit.test.ts

Liquidity provider unit tests suite
  βœ… normalizeOfferParams, ask tick = 0 price = 10 different decimals
  βœ… normalizeOfferParams, ask tick = 0 price = 10 different decimals
  βœ… normalizeOfferParams, ask tick = 0 same decimals
  βœ… normalizeOfferParams, ask with tick = -1 different decimals
  βœ… normalizeOfferParams, ask with tick = -1 different decimals
  βœ… normalizeOfferParams, ask with tick = -1 same decimals
  βœ… normalizeOfferParams, ask with tick = -1 same decimals
  βœ… normalizeOfferParams, ask with tick = 1 different decimals
  βœ… normalizeOfferParams, ask with tick = 1 different decimals
  βœ… normalizeOfferParams, ask with tick = 1 same decimals
  βœ… normalizeOfferParams, ask with tick = 1 same decimals
  βœ… normalizeOfferParams, bid tick = 0 different decimals
  βœ… normalizeOfferParams, bid tick = 0 same decimals
  βœ… normalizeOfferParams, with big gives and wants, as asks
  βœ… normalizeOfferParams, with gives and wants, as asks
  βœ… normalizeOfferParams, with gives and wants, as bids
  βœ… normalizeOfferParams, with gives, tick, asks and funding
  βœ… normalizeOfferParams, with gives, tick, bids and no funding
  βœ… normalizeOfferParams, with non-equal decimals gives, tick, bids and no funding
  βœ… normalizeOfferParams, with volume and price 1, as asks
  βœ… normalizeOfferParams, with volume and price 1, as bids
  βœ… normalizeOfferParams, with volume and price 2, as asks
  βœ… normalizeOfferParams, with volume and price 2, as bids

βœ…Β test/unit/market.unit.test.ts

Market unit tests suite getBaseQuoteVolumes
  βœ… returns gives as baseVolume and wants as quoteVolume
  βœ… returns gives as quoteVolume and wants as baseVolume
Market unit tests suite getDisplayDecimalsForPriceDifferences
  βœ… returns 7 decimals when difference is 1e-7
  βœ… returns 7 decimals when difference is 9e-7
  βœ… returns 7 decimals when difference is 9e-7
  βœ… returns no decimals for empty list
  βœ… returns no decimals for list with offers with same price
  βœ… returns no decimals for list with one offer
  βœ… returns no decimals when price differences are integers
  βœ… returns one decimal when difference is -0.1
  βœ… returns one decimal when difference is -0.9999999
  βœ… returns one decimal when difference is 0.1
  βœ… returns one decimal when difference is 0.9999999
  βœ… returns the decimals for the first difference when that is smallest
  βœ… returns the decimals for the last difference when that is smallest
Market unit tests suite getGivesForPrice
  βœ… returns wants divided by price
  βœ… returns wants multiplied by price
Market unit tests suite getGivesWantsForVolumeAtPrice
  βœ… return gives = volume && wants = volume*price for undefined type
  βœ… return gives = volume*price && wants = volume for undefined type
Market unit tests suite getWantsForPrice
  βœ… returns gives multiplied by price
  βœ… returns wants divided by price

βœ…Β test/unit/prettyPrint.unit.test.ts

PrettyPrint Unit test suite consoleOffers
  βœ… should use default filter
  βœ… should use given filter
PrettyPrint Unit test suite prettyPrint
  βœ… prints the offers using the given filter

βœ…Β test/unit/semibook.unit.test.ts

Semibook unit test suite getIsVolumeDesiredForAsks
  βœ… returns false, when desiredVolume is undefined
  βœ… returns false, when what is base and to is sell
  βœ… returns false, when what is quote and to is buy
  βœ… returns true, when what is base and to is buy
  βœ… returns true, when what is quote and to is sell
Semibook unit test suite getIsVolumeDesiredForBids
  βœ… returns false, when desiredVolume is undefined
  βœ… returns false, when what is base and to is buy 
  βœ… returns false, when what is quote and to is sell 
  βœ… returns true, when what is base and to is sell 
  βœ… returns true, when what is quote and to is buy 
Semibook unit test suite getOfferFromCacheOrFail
  βœ… returns offer when offer is in cache
  βœ… throws error when offer is not in cache
Semibook unit test suite insertOffer
  βœ… inserting offer exceeds maxOffer size, offer is not worst offer
  βœ… inserting offer exceeds maxOffer size, offer is worst offer
  βœ… inserts offer in empty book
  βœ… inserts offer in non empty book, offer is at a better tick, tick already exist
  βœ… inserts offer in non empty book, offer is at worse tick, tick already exist
  βœ… inserts offer in non empty book, offer is better
  βœ… inserts offer in non empty book, offer is in the middle
  βœ… inserts offer in non empty book, offer is in the middle at an already existing tick
  βœ… inserts offer in non empty book, offer is worse
Semibook unit test suite removeOffer
  βœ… removes last offer in book
  βœ… removes offer from empty book
  βœ… removes offer from non empty book, offer is best offer, does not have others at same tick
  βœ… removes offer from non empty book, offer is best offer, has others at same tick
  βœ… removes offer from non empty book, offer is worst offer, has others at same tick
  βœ… removes offer from non empty book, offer is worst offer, has others at same tick

βœ…Β test/unit/tickLib.unit.test.ts

TickLib unit test suite divExpUp
  βœ… a==0 then rem == 0, should return  (a >> e) + rem
  βœ… e<256 and a > 0 
  βœ… e>255 then rem == 1, should return  (a >> e) + rem
TickLib unit test suite floatLt
  βœ… returns false when exp_a < exp_b
  βœ… returns false when exp_a == exp_b and mantissa_a >= mantissa_b
  βœ… returns true when exp_a == exp_b and mantissa_a < mantissa_b
  βœ… returns true when exp_a > exp_b and mantissa_a < mantissa_b
TickLib unit test suite getTickFromPrice
  βœ… should return the correct tick for price, MAX_TICK
TickLib unit test suite inboundFromOutbound
  βœ… should return the correct value of inbound from outbound based on tick
TickLib unit test suite inboundFromOutboundUp
  βœ… should return the correct rounded up value of inbound from outbound based on tick
TickLib unit test suite inRange
  βœ… should return false if tick is outside the range
  βœ… should return true if tick is within the range
TickLib unit test suite nonNormalizedPriceFromTick
  βœ… Test with maximum tick
  βœ… Test with minimum tick
  βœ… Test with negative tick
  βœ… Test with positive tick
  βœ… Test with tick exceeding MAX_TICK
TickLib unit test suite normalizePrice
  βœ… should handle negative shift correctly
  βœ… should handle positive shift correctly
  βœ… should throw an error if exp is less than 0 after normalization
  βœ… should throw an error if mantissa is zero
TickLib unit test suite outboundFromInbound
  βœ… should return the correct value of outbound from inbound based on tick
TickLib unit test suite outboundFromInboundUp
  βœ… should return the correct rounded up value of outbound from inbound based on tick
TickLib unit test suite priceFromTick
  βœ… should return the correct price for tick, 0
  βœ… should return the correct price for tick, 1 
  βœ… should return the correct price for tick, MAX_TICK
  βœ… should return the correct price for tick, MIN_TICK
TickLib unit test suite priceFromVolumes
  βœ… should return the correct mantissa and exp for non-zero inboundAmt and outboundAmt
  βœ… should return the correct mantissa and exp when inboundAmt is 0
  βœ… should return the correct mantissa and exp when outboundAmt is 0
TickLib unit test suite priceToMantissaAndExponent
  βœ… should return the correct mantissa and exponent for price, MAX_TICK
  βœ… should return the correct mantissa and exponent for price, MIN_TICK
  βœ… should return the correct mantissa and exponent for price, tick = -1
  βœ… should return the correct mantissa and exponent for price, tick = -1000
  βœ… should return the correct mantissa and exponent for price, tick = 0
  βœ… should return the correct mantissa and exponent for price, tick = 1
  βœ… should return the correct mantissa and exponent for price, tick = 1000
TickLib unit test suite ratioFromTick
  βœ… test_ratioFromTick
TickLib unit test suite tickFromNormalizedPrice
  βœ… should return the correct tick for normalizedPrice
  βœ… should revert with mgv/tickFromRatio/tooHigh
  βœ… should revert with mgv/tickFromRatio/tooLow
TickLib unit test suite tickFromRatio
  βœ… should return the correct tick for price
TickLib unit test suite tickFromVolumes
  βœ… should return tick 

βœ…Β test/unit/tickPriceHelper.unit.test.ts

TickPriceHelper unit tests suite
  βœ… manual calculation
  βœ… manual calculation inverse decimals
TickPriceHelper unit tests suite inboundFromOutbound
  βœ… inboundFromOutbound ba=asks base=1 quote=2 price=2
  βœ… inboundFromOutbound ba=asks base=1 quote=2 price=2
  βœ… inboundFromOutbound ba=asks base=2 quote=1 price=0.5
  βœ… inboundFromOutbound ba=asks base=2 quote=1 price=0.5
  βœ… inboundFromOutbound ba=asks base=6 quote=3 price=0.5
  βœ… inboundFromOutbound ba=asks base=6 quote=3 price=0.5
  βœ… inboundFromOutbound ba=bids base=1 quote=2 price=2
  βœ… inboundFromOutbound ba=bids base=1 quote=2 price=2
  βœ… inboundFromOutbound ba=bids base=2 quote=1 price=0.5
  βœ… inboundFromOutbound ba=bids base=2 quote=1 price=0.5
  βœ… inboundFromOutbound ba=bids base=6 quote=3 price=0.5
  βœ… inboundFromOutbound ba=bids base=6 quote=3 price=0.5
  βœ… outboundFromInbound ba=asks base=1 quote=2 price=2
  βœ… outboundFromInbound ba=asks base=1 quote=2 price=2
  βœ… outboundFromInbound ba=asks base=2 quote=1 price=0.5
  βœ… outboundFromInbound ba=asks base=2 quote=1 price=0.5
  βœ… outboundFromInbound ba=asks base=6 quote=3 price=0.5
  βœ… outboundFromInbound ba=asks base=6 quote=3 price=0.5
  βœ… outboundFromInbound ba=bids base=1 quote=2 price=2
  βœ… outboundFromInbound ba=bids base=1 quote=2 price=2
  βœ… outboundFromInbound ba=bids base=2 quote=1 price=0.5
  βœ… outboundFromInbound ba=bids base=2 quote=1 price=0.5
  βœ… outboundFromInbound ba=bids base=6 quote=3 price=0.5
  βœ… outboundFromInbound ba=bids base=6 quote=3 price=0.5
TickPriceHelper unit tests suite priceFromTick
  βœ… returns price=1 for tick 0 with base decimals: 6, quote decimals: 6 (asks semibook)
  βœ… returns price=1 for tick 0 with base decimals: 6, quote decimals: 6 (bids semibook)
  βœ… returns price=1.00000396574 for tick 414486 with base decimals: 18, quote decimals: 0 (bids semibook)
  βœ… returns price=1.000096 for tick -414487 with base decimals: 0, quote decimals: 18 (bids semibook)
  βœ… returns price=100 for tick 0 with base decimals: 2, quote decimals: 0 (asks semibook)
  βœ… returns price=100 for tick 0 with base decimals: 2, quote decimals: 0 (bids semibook)
  βœ… returns price=1838.53469156 for tick -75171 with base decimals: 18, quote decimals: 18 (bids semibook)
  βœ… returns price=1838.534691561 for tick 75171 with base decimals: 18, quote decimals: 18 (asks semibook)
  βœ… returns price=1e-12 for tick 0 with base decimals: 6, quote decimals: 18 (asks semibook)
  βœ… returns price=1e-12 for tick 0 with base decimals: 6, quote decimals: 18 (bids semibook)
TickPriceHelper unit tests suite priceFromTick is inverse of tickFromPrice (up to tick-step)
  βœ… returns price=1 for tickFromPrice(..., tickFromPrice(..., 1))) with base decimals: 6, quote decimals: 6 for asks semibook
  βœ… returns price=1 for tickFromPrice(..., tickFromPrice(..., 1))) with base decimals: 6, quote decimals: 6 for bids semibook
  βœ… returns price=1.00000396574 for tickFromPrice(..., tickFromPrice(..., 1.00000396574))) with base decimals: 18, quote decimals: 0 for bids semibook
  βœ… returns price=1.000096 for tickFromPrice(..., tickFromPrice(..., 1.000096))) with base decimals: 0, quote decimals: 18 for bids semibook
  βœ… returns price=100 for tickFromPrice(..., tickFromPrice(..., 100))) with base decimals: 2, quote decimals: 0 for asks semibook
  βœ… returns price=100 for tickFromPrice(..., tickFromPrice(..., 100))) with base decimals: 2, quote decimals: 0 for bids semibook
  βœ… returns price=1838.53469156 for tickFromPrice(..., tickFromPrice(..., 1838.53469156))) with base decimals: 18, quote decimals: 18 for bids semibook
  βœ… returns price=1838.534691561 for tickFromPrice(..., tickFromPrice(..., 1838.534691561))) with base decimals: 18, quote decimals: 18 for asks semibook
  βœ… returns price=1e-12 for tickFromPrice(..., tickFromPrice(..., 1e-12))) with base decimals: 6, quote decimals: 18 for asks semibook
  βœ… returns price=1e-12 for tickFromPrice(..., tickFromPrice(..., 1e-12))) with base decimals: 6, quote decimals: 18 for bids semibook
TickPriceHelper unit tests suite tickFromPrice
  βœ… returns tick=-414487 for price 1.000096 with base decimals: 0, quote decimals: 18 (bids semibook)) 
  βœ… returns tick=-75171 for price 1838.53469156 with base decimals: 18, quote decimals: 18 (bids semibook)) 
  βœ… returns tick=0 for price 1 with base decimals: 6, quote decimals: 6 (asks semibook)) 
  βœ… returns tick=0 for price 1 with base decimals: 6, quote decimals: 6 (bids semibook)) 
  βœ… returns tick=0 for price 100 with base decimals: 2, quote decimals: 0 (asks semibook)) 
  βœ… returns tick=0 for price 100 with base decimals: 2, quote decimals: 0 (bids semibook)) 
  βœ… returns tick=0 for price 1e-12 with base decimals: 6, quote decimals: 18 (asks semibook)) 
  βœ… returns tick=0 for price 1e-12 with base decimals: 6, quote decimals: 18 (bids semibook)) 
  βœ… returns tick=414486 for price 1.00000396574 with base decimals: 18, quote decimals: 0 (bids semibook)) 
  βœ… returns tick=75171 for price 1838.534691561 with base decimals: 18, quote decimals: 18 (asks semibook)) 
TickPriceHelper unit tests suite tickFromPrice is inverse of priceFromTick (up to tick-step)
  βœ… returns tick=-414487 for priceFromTick(..., priceFromTick(..., -414487))) with base decimals: 0, quote decimals: 18 for bids semibook
  βœ… returns tick=-75171 for priceFromTick(..., priceFromTick(..., -75171))) with base decimals: 18, quote decimals: 18 for bids semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 2, quote decimals: 0 for asks semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 2, quote decimals: 0 for bids semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 6, quote decimals: 18 for asks semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 6, quote decimals: 18 for bids semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 6, quote decimals: 6 for asks semibook
  βœ… returns tick=0 for priceFromTick(..., priceFromTick(..., 0))) with base decimals: 6, quote decimals: 6 for bids semibook
  βœ… returns tick=414486 for priceFromTick(..., priceFromTick(..., 414486))) with base decimals: 18, quote decimals: 0 for bids semibook
  βœ… returns tick=75171 for priceFromTick(..., priceFromTick(..., 75171))) with base decimals: 18, quote decimals: 18 for asks semibook

βœ…Β test/unit/trade.unit.test.ts

Trade unit tests suite comparePrices
  βœ… returns false, when price = referencePrice and compare is β€œgtβ€œ
  βœ… returns false, when price = referencePrice and compare is β€œltβ€œ
  βœ… returns false, when price > referencePrice and compare is β€œgtβ€œ
  βœ… returns false, when price > referencePrice and compare is β€œltβ€œ
  βœ… returns true, when price < referencePrice and compare is β€œgtβ€œ
  βœ… returns true, when price < referencePrice and compare is β€œltβ€œ
Trade unit tests suite getParamsForBuy
  βœ… returns fillVolume as fillVolume, tick as tick and fillWants as fillWants, when params has tick, fillVolume and fillWants 
  βœ… returns fillVolume as fillVolume, tick as tick and fillWants as true, when params has fillVolume and tick, but no fillWants 
  βœ… returns fillVolume as gives, tick as TickLib.fromVolume(gives,wants) and fillWants as fillWants, when params has gives, wants and fillWants 
  βœ… returns fillVolume as total, tick as tick(price) and fillWants false, when params has price!=null and total
  βœ… returns fillVolume as volume, tick as -1*tick(price) and fillWants true, when params has price!=null and volume
Trade unit tests suite getParamsForSell
  βœ… returns fillVolume as fillVolume, tick as tick and fillWants false, when params has wants and gives, but no fillWants
  βœ… returns fillVolume as gives, tick as TickLib.fromVolume(gives,wants) and fillWants as fillWants, when params has gives, wants and fillWants 
  βœ… returns fillVolume as total, tick as tick(price) and fillWants true, when params has price!=null and total
  βœ… returns fillVolume as volume, tick as tick(price) and fillWants false, when params has price!=null and volume
  βœ… returns wants as wants, gives as gives and fillWants as fillWants, when params has wants, gives and fillWants
Trade unit tests suite isPriceBetter
  βœ… Uses β€œgtβ€œ when ba = bids
  βœ… Uses β€œltβ€œ when ba = asks
Trade unit tests suite isPriceWorse
  βœ… Uses β€œgtβ€œ when ba = bids
  βœ… Uses β€œltβ€œ when ba = asks
Trade unit tests suite validateSlippage
  βœ… return given slippage, when it is valid
  βœ… returns 0, when slippage is undefined
  βœ… throw error, when slippage is above 100
  βœ… throw error, when slippage is lower than 0

βœ…Β test/unit/tradeEventManagement.unit.test.ts

TradeEventManagement unit tests suite createPosthookFailure
  βœ… returns posthookFailure object, always
TradeEventManagement unit tests suite createSuccess
  βœ… returns Success object, always
TradeEventManagement unit tests suite createSummary
  βœ… return summary with partialFill as true, when partialFill func returns true
TradeEventManagement unit tests suite createSummaryForOrderComplete
  βœ… returns createSummary, always
TradeEventManagement unit tests suite createSummaryForOrderSummary
  βœ… returns createSummary with offerId, always
TradeEventManagement unit tests suite createTradeFailure
  βœ… returns TradeFailure object, always

βœ…Β test/unit/unitCalculations.unit.test.ts

UnitCalculations unit tests suite fromUnits
  βœ… returns Big number, amount is BigNumber and nameOrDecimal is number
  βœ… returns Big number, amount is number and nameOrDecimal is number
  βœ… returns Big number, amount is number and nameOrDecimal is string
  βœ… returns Big number, amount is string and nameOrDecimal is number