220 lines
6.6 KiB
QML
220 lines
6.6 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
|
|
import QtTest 1.15
|
|
|
|
import StatusQ 0.1
|
|
|
|
import shared.popups.send.views 1.0
|
|
|
|
Item {
|
|
id: root
|
|
|
|
Component {
|
|
id: componentUnderTest
|
|
|
|
AmountToSend {}
|
|
}
|
|
|
|
property AmountToSend amountToSend
|
|
|
|
SignalSpy {
|
|
id: amountChangedSpy
|
|
target: amountToSend
|
|
signalName: "amountChanged"
|
|
}
|
|
|
|
TestCase {
|
|
name: "AmountToSend"
|
|
when: windowShown
|
|
|
|
function type(key, times = 1) {
|
|
for (let i = 0; i < times; i++) {
|
|
keyClick(key)
|
|
}
|
|
}
|
|
|
|
function init() {
|
|
amountToSend = createTemporaryObject(componentUnderTest, root)
|
|
}
|
|
|
|
function cleanup() {
|
|
amountChangedSpy.clear()
|
|
}
|
|
|
|
function test_empty() {
|
|
compare(amountToSend.valid, false)
|
|
compare(amountToSend.empty, true)
|
|
compare(amountToSend.amount, "0")
|
|
compare(amountToSend.fiatMode, false)
|
|
}
|
|
|
|
function test_settingValueInCryptoMode() {
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
|
|
amountToSend.multiplierIndex = 3
|
|
amountToSend.setValue("2.5")
|
|
|
|
compare(textField.text, "2.5")
|
|
compare(amountToSend.amount, "2500")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("2.12345678")
|
|
|
|
compare(textField.text, "2.123")
|
|
compare(amountToSend.amount, "2123")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("2.1239")
|
|
|
|
compare(textField.text, "2.124")
|
|
compare(amountToSend.amount, "2124")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue(".1239")
|
|
|
|
compare(textField.text, "0.124")
|
|
compare(amountToSend.amount, "124")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("1.0000")
|
|
|
|
compare(textField.text, "1")
|
|
compare(amountToSend.amount, "1000")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("0.0000")
|
|
|
|
compare(textField.text, "0")
|
|
compare(amountToSend.amount, "0")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("x")
|
|
|
|
compare(textField.text, "NaN")
|
|
compare(amountToSend.amount, "0")
|
|
compare(amountToSend.valid, false)
|
|
|
|
// exceeding maxium allowed integral part
|
|
amountToSend.setValue("1234567890000")
|
|
compare(textField.text, "1234567890000")
|
|
compare(amountToSend.amount, "0")
|
|
compare(amountToSend.valid, false)
|
|
}
|
|
|
|
function test_settingValueInFiatMode() {
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
const mouseArea = findChild(amountToSend, "amountToSend_mouseArea")
|
|
|
|
amountToSend.price = 0.5
|
|
amountToSend.multiplierIndex = 3
|
|
|
|
mouseClick(mouseArea)
|
|
compare(amountToSend.fiatMode, true)
|
|
|
|
amountToSend.setValue("2.5")
|
|
|
|
compare(textField.text, "2.50")
|
|
compare(amountToSend.amount, "5000")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("2.12345678")
|
|
|
|
compare(textField.text, "2.12")
|
|
compare(amountToSend.amount, "4240")
|
|
compare(amountToSend.valid, true)
|
|
|
|
amountToSend.setValue("2.129")
|
|
|
|
compare(textField.text, "2.13")
|
|
compare(amountToSend.amount, "4260")
|
|
compare(amountToSend.valid, true)
|
|
|
|
// exceeding maxium allowed integral part
|
|
amountToSend.setValue("1234567890000")
|
|
compare(textField.text, "1234567890000.00")
|
|
compare(amountToSend.amount, "0")
|
|
compare(amountToSend.valid, false)
|
|
}
|
|
|
|
function test_switchingMode() {
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
const mouseArea = findChild(amountToSend, "amountToSend_mouseArea")
|
|
|
|
amountToSend.price = 0.5
|
|
amountToSend.multiplierIndex = 3
|
|
|
|
amountToSend.setValue("10.5")
|
|
compare(amountToSend.amount, "10500")
|
|
|
|
mouseClick(mouseArea)
|
|
compare(amountToSend.fiatMode, true)
|
|
compare(textField.text, "5.25")
|
|
compare(amountToSend.amount, "10500")
|
|
|
|
mouseClick(mouseArea)
|
|
compare(amountToSend.fiatMode, false)
|
|
compare(textField.text, "10.5")
|
|
compare(amountToSend.amount, "10500")
|
|
|
|
mouseClick(mouseArea)
|
|
compare(amountToSend.fiatMode, true)
|
|
amountToSend.price = 0.124
|
|
amountToSend.setValue("1")
|
|
compare(textField.text, "1.00")
|
|
|
|
mouseClick(mouseArea)
|
|
compare(amountToSend.fiatMode, false)
|
|
compare(textField.text, "8.065")
|
|
compare(amountToSend.amount, "8065")
|
|
}
|
|
|
|
function test_clear() {
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
|
|
amountToSend.setValue("10.5")
|
|
amountToSend.clear()
|
|
|
|
compare(amountToSend.amount, "0")
|
|
compare(textField.text, "")
|
|
}
|
|
|
|
function test_localeAndDecimalPoint() {
|
|
verify(!!amountToSend)
|
|
|
|
// set a different locale, thus a different decimal separator
|
|
amountToSend.locale = Qt.locale("cs_CZ")
|
|
tryCompare(amountToSend.locale, "name", "cs_CZ")
|
|
tryCompare(amountToSend, "decimalPoint", ",") // "," is the default decimal separator for cs_CZ locale
|
|
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
verify(!!textField)
|
|
|
|
amountToSend.setValue("2.5")
|
|
tryCompare(textField, "text", "2,5")
|
|
verify(amountToSend.valid)
|
|
}
|
|
|
|
function test_pasteChangesAmount() {
|
|
compare(amountToSend.valid, false)
|
|
compare(amountToSend.empty, true)
|
|
compare(amountToSend.amount, "0")
|
|
|
|
QClipboardProxy.copyTextToClipboard("1.0005")
|
|
const textField = findChild(amountToSend, "amountToSend_textField")
|
|
verify(!!textField)
|
|
|
|
verify(textField.canPaste)
|
|
mouseClick(textField)
|
|
keySequence(StandardKey.Paste)
|
|
compare(textField.text, "1.0005")
|
|
|
|
compare(amountToSend.valid, true)
|
|
compare(amountToSend.empty, false)
|
|
compare(amountToSend.amount, "1000500000000000000")
|
|
|
|
compare(amountChangedSpy.count, 1)
|
|
}
|
|
}
|
|
}
|