diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2013-12-09 23:06:39 +0200 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2013-12-09 23:06:39 +0200 |
| commit | 4f61719b3368df3ff9eaea27b83517e9cf4612e4 (patch) | |
| tree | e30f2b7ae0095ebfd0c05255ad869043797991ce | |
| parent | 6e444978a1c327c7cd98ded195478dc6906dc1b7 (diff) | |
| download | unitmaster-4f61719b3368df3ff9eaea27b83517e9cf4612e4.tar.gz unitmaster-4f61719b3368df3ff9eaea27b83517e9cf4612e4.zip | |
area model + tests
| -rw-r--r-- | src/qml/pages/AreaModel.qml | 78 | ||||
| -rw-r--r-- | src/qml/pages/QuantityModel.qml | 8 | ||||
| -rw-r--r-- | tests/tests.pro | 3 | ||||
| -rw-r--r-- | tests/tst_AreaModel.qml | 69 |
4 files changed, 153 insertions, 5 deletions
diff --git a/src/qml/pages/AreaModel.qml b/src/qml/pages/AreaModel.qml new file mode 100644 index 0000000..169b127 --- /dev/null +++ b/src/qml/pages/AreaModel.qml @@ -0,0 +1,78 @@ +import QtQuick 2.0 + +ListModel { + function from(title, value) { + var functions = { + "square meter": function () { return value; }, + "square kilometer": function () { return value*(1000*1000); }, + "square feet": function () { return value*0.09290304; }, + "square yard": function () { return value*0.83612736; }, + "square mile": function () { return value*2.589988110336e6; }, + "are": function () { return value*100; }, + "hectare": function () { return value*10000; }, + "international acre": function () { return value*4046.8564224; }, + "survey acre": function () { return value*4046.872609874252; } + }; + return functions[title](); + } + + function to(title, value) { + var functions = { + "square meter": function () { return value; }, + "square kilometer": function () { return value/(1000*1000); }, + "square feet": function () { return value/0.09290304; }, + "square yard": function () { return value/0.83612736; }, + "square mile": function () { return value/2.589988110336e6; }, + "are": function () { return value/100; }, + "hectare": function () { return value/10000; }, + "international acre": function () { return value/4046.8564224; }, + "survey acre": function () { return value/4046.872609874252; } + }; + return functions[title](); + } + + ListElement { + title: "square meter" + abbr: "m²" + } + + ListElement { + title: "square kilometer" + abbr: "km²" + } + + ListElement { + title: "square feet" + abbr: "ft²" + } + + ListElement { + title: "square yard" + abbr: "yd²" + } + + ListElement { + title: "square mile" + abbr: "mi²" + } + + ListElement { + title: "are" + abbr: "a" + } + + ListElement { + title: "hectare" + abbr: "ha" + } + + ListElement { + title: "international acre" + abbr: "" + } + + ListElement { + title: "survey acre" + abbr: "" + } +} diff --git a/src/qml/pages/QuantityModel.qml b/src/qml/pages/QuantityModel.qml index f7e3844..81ecb50 100644 --- a/src/qml/pages/QuantityModel.qml +++ b/src/qml/pages/QuantityModel.qml @@ -26,10 +26,10 @@ ListModel { // model: "CurrentModel.qml" // } -// ListElement { -// title: "area" -// model: "AreaModel.qml" -// } + ListElement { + title: "area" + model: "AreaModel.qml" + } ListElement { title: "angle" diff --git a/tests/tests.pro b/tests/tests.pro index dc06374..948925f 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -29,4 +29,5 @@ OTHER_FILES += \ tst_AngleModel.qml \ tst_LengthModel.qml \ tst_PressureModel.qml \ - tst_TemperatureModel.qml + tst_TemperatureModel.qml \ + tst_AreaModel.qml diff --git a/tests/tst_AreaModel.qml b/tests/tst_AreaModel.qml new file mode 100644 index 0000000..04a3d80 --- /dev/null +++ b/tests/tst_AreaModel.qml @@ -0,0 +1,69 @@ +import QtQuick 2.0 +import QtTest 1.0 + +import "../harbour-unitmaster/qml/pages" + +TestCase { + name: "AreaModelTest" + + AreaModel { + id: model + } + + function test_to_data() { + return [ + { to: "square kilometer", value: 1, res: 1/(1000*1000) }, + { to: "square feet", value: 1, res: 10.763911 }, + { to: "square yard", value: 1, res: 1.195990 }, + { to: "square mile", value: 1, res: 1/2589988.110336 }, + { to: "are", value: 1, res: 0.01 }, + { to: "hectare", value: 1, res: 0.0001 }, + { to: "international acre", value: 1, res: 1/4046.8564224 }, + { to: "survey acre", value: 1, res: 1/4046.872609874252 } + ]; + } + + function test_to(data) { + var result = model.to(data.to, data.value); + compare(result, data.res); + } + + function test_from_data() { + return [ + { from: "square kilometer", value: 1, res: 1000*1000 }, + { from: "square feet", value: 1, res: 0.09290304 }, + { from: "square yard", value: 1, res: 0.83612736 }, + { from: "square mile", value: 1, res: 2589988.110336 }, + { from: "are", value: 1, res: 100 }, + { from: "hectare", value: 1, res: 10000 }, + { from: "international acre", value: 1, res: 4046.8564224 }, + { from: "survey acre", value: 1, res: 4046.872609874252 } + ]; + } + + function test_from(data) { + var result = model.from(data.from, data.value); + compare(result, data.res); + } + + function test_combined_data() { + return [ + { from: 'square mile', fromval: 1, to: 'square feet', toval: 27878400 }, + { from: 'square mile', fromval: 1, to: 'square yard', toval: 3097600 }, + { from: 'square mile', fromval: 1, to: 'hectare', toval: 258.9988110336 }, + { from: 'square mile', fromval: 1, to: 'square kilometer', toval: 2.589988110336 }, + { from: 'international acre', fromval: 1, to: 'hectare', toval: 0.40468564224 }, + { from: 'survey acre', fromval: 1, to: 'hectare', toval: 0.404687261 }, + { from: 'hectare', fromval: 1, to: 'are', toval: 100 }, + { from: 'hectare', fromval: 1, to: 'international acre', toval: 2.4710538 }, + ]; + } + + function test_combined(data) { + var sq_meters = model.from(data.from, data.fromval); +// console.log('sq_meters: ', sq_meters); + var result = model.to(data.to, sq_meters); +// console.log('result', result); + compare(result, data.toval); + } +} |
