Skip to content
This repository has been archived by the owner on May 10, 2024. It is now read-only.

Expand Rewards to three decimal places #2638

Merged
merged 1 commit into from
Jun 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions BraveRewardsUI/BATValue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public struct BATValue: DisplayableOption {
value = doubleValue
}

public init?(probi probiValue: String, precision: Int16 = 1) {
public init?(probi probiValue: String, precision: Int16 = 3) {
let decimalNumber = NSDecimalNumber(string: probiValue)

if decimalNumber == NSDecimalNumber.notANumber { return nil }
Expand All @@ -38,7 +38,7 @@ public struct BATValue: DisplayableOption {
}

public var displayString: String {
return String(format: "%.1f", value)
return String(format: "%.3f", value)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know we're having this conversation already but just to document: Are we sure we want to always show 3 decimal places instead of a min/max number of decimals shown based on the value itself? We can easily do this with NumberFormatter

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we always show 3 decimal places for desktop, I will merge as-is. And if a decision is made to change we should raise a new issue for all platforms

}

var probiValue: String {
Expand Down
70 changes: 35 additions & 35 deletions BraveRewardsUITests/BATValueTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import XCTest
class BATValueTests: XCTestCase {

func testStringInitializer() {
XCTAssertEqual(BATValue("0")?.displayString, "0.0")
XCTAssertEqual(BATValue("1.0")?.displayString, "1.0")
XCTAssertEqual(BATValue("20.99")?.displayString, "21.0")
XCTAssertEqual(BATValue("-10.0")?.displayString, "-10.0")
XCTAssertEqual(BATValue("-10")?.displayString, "-10.0")
XCTAssertEqual(BATValue("-200")?.displayString, "-200.0")
XCTAssertEqual(BATValue("0")?.displayString, "0.000")
XCTAssertEqual(BATValue("1.0")?.displayString, "1.000")
XCTAssertEqual(BATValue("20.9999")?.displayString, "21.000")
XCTAssertEqual(BATValue("-10.0")?.displayString, "-10.000")
XCTAssertEqual(BATValue("-10")?.displayString, "-10.000")
XCTAssertEqual(BATValue("-200")?.displayString, "-200.000")

// Not numbers
XCTAssertNil(BATValue("wrong_format"))
Expand All @@ -28,10 +28,10 @@ class BATValueTests: XCTestCase {
XCTAssertEqual(BATValue(probi: tooShort)?.doubleValue, 0.0)

let roundDown = "0999999999999999999"
XCTAssertEqual(BATValue(probi: roundDown)?.doubleValue, 0.9)
XCTAssertEqual(BATValue(probi: roundDown)?.doubleValue, 0.999)

let regularConvert = "1559999999999999990"
XCTAssertEqual(BATValue(probi: regularConvert)?.doubleValue, 1.5)
XCTAssertEqual(BATValue(probi: regularConvert)?.doubleValue, 1.559)

let doublePrecision = "1559999999999999990"
XCTAssertEqual(BATValue(probi: doublePrecision, precision: 2)?.doubleValue, 1.55)
Expand All @@ -42,56 +42,56 @@ class BATValueTests: XCTestCase {

func testProbiValue() {
let tooShort = "9"
XCTAssertEqual(BATValue(probi: tooShort)?.displayString, "0.0")
XCTAssertEqual(BATValue(probi: tooShort)?.displayString, "0.000")

let roundDown = "0999999999999999999"
XCTAssertEqual(BATValue(probi: roundDown)?.displayString, "0.9")
XCTAssertEqual(BATValue(probi: roundDown)?.displayString, "0.999")

let regularConvert = "1559999999999999990"
XCTAssertEqual(BATValue(probi: regularConvert)?.displayString, "1.5")
XCTAssertEqual(BATValue(probi: regularConvert)?.displayString, "1.559")

let doublePrecision = "1559999999999999990"
XCTAssertEqual(BATValue(probi: doublePrecision, precision: 2)?.displayString, "1.6")
XCTAssertEqual(BATValue(probi: doublePrecision, precision: 3)?.displayString, "1.559")

let big = "150000000000000000000000000"
XCTAssertEqual(BATValue(probi: big)?.displayString, "150000000.0")
XCTAssertEqual(BATValue(probi: big)?.displayString, "150000000.000")
}

func testDisplayString() {

XCTAssertEqual(BATValue(10.1).displayString, "10.1")
XCTAssertEqual(BATValue(1).displayString, "1.0")
XCTAssertEqual(BATValue(22).displayString, "22.0")
XCTAssertEqual(BATValue(10.1).displayString, "10.100")
XCTAssertEqual(BATValue(1).displayString, "1.000")
XCTAssertEqual(BATValue(22).displayString, "22.000")

// Rounding
XCTAssertEqual(BATValue(10.1123123).displayString, "10.1")
XCTAssertEqual(BATValue(10.142).displayString, "10.1")
XCTAssertEqual(BATValue(10.111123123).displayString, "10.111")
XCTAssertEqual(BATValue(10.14234).displayString, "10.142")

XCTAssertEqual(BATValue(10.192).displayString, "10.2")
XCTAssertEqual(BATValue(10.152).displayString, "10.2")
XCTAssertEqual(BATValue(10.991).displayString, "11.0")
XCTAssertEqual(BATValue(10.1929).displayString, "10.193")
XCTAssertEqual(BATValue(10.1529).displayString, "10.153")
XCTAssertEqual(BATValue(10.9999).displayString, "11.000")

// Zero
XCTAssertEqual(BATValue(0.0).displayString, "0.0")
XCTAssertEqual(BATValue(0).displayString, "0.0")
XCTAssertEqual(BATValue(0.1).displayString, "0.1")
XCTAssertEqual(BATValue(0.97).displayString, "1.0")
XCTAssertEqual(BATValue(0.0).displayString, "0.000")
XCTAssertEqual(BATValue(0).displayString, "0.000")
XCTAssertEqual(BATValue(0.1).displayString, "0.100")
XCTAssertEqual(BATValue(0.9999).displayString, "1.000")

XCTAssertEqual(BATValue(1.99999999999999999).displayString, "2.0")
XCTAssertEqual(BATValue(0.00000000000000001).displayString, "0.0")
XCTAssertEqual(BATValue(1.99999999999999999).displayString, "2.000")
XCTAssertEqual(BATValue(0.00000000000000001).displayString, "0.000")

// Negative values
XCTAssertEqual(BATValue(-10.1).displayString, "-10.1")
XCTAssertEqual(BATValue(-1).displayString, "-1.0")
XCTAssertEqual(BATValue(-22).displayString, "-22.0")
XCTAssertEqual(BATValue(-10.1).displayString, "-10.100")
XCTAssertEqual(BATValue(-1).displayString, "-1.000")
XCTAssertEqual(BATValue(-22).displayString, "-22.000")

// Rounding
XCTAssertEqual(BATValue(-10.1123123).displayString, "-10.1")
XCTAssertEqual(BATValue(-10.142).displayString, "-10.1")
XCTAssertEqual(BATValue(-10.1123123).displayString, "-10.112")
XCTAssertEqual(BATValue(-10.1423).displayString, "-10.142")

XCTAssertEqual(BATValue(-10.192).displayString, "-10.2")
XCTAssertEqual(BATValue(-10.152).displayString, "-10.2")
XCTAssertEqual(BATValue(-10.991).displayString, "-11.0")
XCTAssertEqual(BATValue(-10.1929).displayString, "-10.193")
XCTAssertEqual(BATValue(-10.1529).displayString, "-10.153")
XCTAssertEqual(BATValue(-10.99992).displayString, "-11.000")
}

}