Bruker:Jeblad/Module:JSONstat/testtilfeller
Utseende
![]() | Denne siden inneholder testtilfeller for modulen Bruker:Jeblad/Module:JSONstat. Vis resultater fra testene. |
-- Unit tests for [[Module:Wb]]. Click talk page to run tests.
-- Note that the test set at [[Bruker:Jeblad/SSB01222.json]] is not live and only for test purposes.
local p = require('Module:UnitTests')
local jsonstat = require('Module:JSONstat')
local categoryAsJson =
[[{
"index": { "A": 0, "B": 1 },
"label": { "A": "test a", "B": "test b" },
"unit": {
"X": { "base": "apples" },
"Y": { "base": "bananas" },
}
}]]
local categoryAsTable = mw.text.jsonDecode( categoryAsJson )
local axisAsJson =
[[{
"label": "horizontal",
"category": {}
}]]
local axisAsTable = mw.text.jsonDecode( axisAsJson )
local dimensionAsJson =
[[{
"Horizontal": {},
"Vertical": {},
"id": [ "Horizontal", "Vertical" ],
"size": [ 3, 2 ],
"role": { "geo": [ "Horizontal" ], "metric": [ "Vertical" ] },
"class": "dimension",
"updated": "2015-08-13T22:52:21Z"
}]]
local dimensionAsTable = mw.text.jsonDecode( dimensionAsJson )
local datasetAsJson =
[[{
"status": {
"4245": ".",
"4300": "."
},
"dimension": {},
"label": "Humtidumpti",
"source": "Test Statistics",
"updated": "2015-08-13T22:52:21Z",
"value": [ 1, 2, 3, 4, 5, 6 ]
}
]]
local datasetAsTable = mw.text.jsonDecode( datasetAsJson )
local bundleAsJson =
[[{
"bar":{"class":"dataset"},
"foo":{"class":"dataset"}
}]]
local bundleAsTable = mw.text.jsonDecode( bundleAsJson )
function p:test_category()
local instance = jsonstat.Category( categoryAsTable )
self:equals( 'Recall signature', instance.signature(), 'JSONstatCategory' )
self:equals_deep( 'Call toTable to get data as table', instance.toTable(), categoryAsTable )
self:equals_deep( 'Call toJSON to get data as JSON', mw.text.jsonDecode( instance.toJSON() ), categoryAsTable )
self:equals_deep( 'Call index to get the indicies on table form', instance.index(), categoryAsTable.index )
self:equals( 'Call index to get a single index', instance.index( 'A' ), categoryAsTable.index['A'] )
self:equals( 'Call index to get a single non-existing index', instance.index( 'C' ), categoryAsTable.index['C'] )
self:equals_deep( 'Call label to get the labels on table form', instance.label(), categoryAsTable.label )
self:equals( 'Call label to get a single index', instance.label( 'A' ), categoryAsTable.label['A'] )
self:equals( 'Call label to get a single non-existing index', instance.label( 'C' ), categoryAsTable.label['C'] )
self:equals_deep( 'Call unit to get the units on table form', instance.unit(), categoryAsTable.unit )
self:equals_deep( 'Call unit to get a single unit', instance.unit( 'X' ), categoryAsTable.unit['X'] )
self:equals_deep( 'Call unit to get a single non-existing unit', instance.unit( 'Z' ), categoryAsTable.label['Z'] )
end
function p:test_axis()
local instance = jsonstat.Axis( axisAsTable )
self:equals( 'Recall signature', instance.signature(), 'JSONstatAxis' )
self:equals_deep( 'Call toTable to get data as table', instance.toTable(), axisAsTable )
self:equals_deep( 'Call toJSON to get data as JSON', mw.text.jsonDecode( instance.toJSON() ), axisAsTable )
self:equals( 'Call label to get the single label', instance.label(), axisAsTable.label )
self:equals( 'Call category to get the single category and check its signature', instance.category().signature(), 'JSONstatCategory' )
end
function p:test_dimension()
local instance = jsonstat.Dimension( dimensionAsTable )
self:equals( 'Recall signature', instance.signature(), 'JSONstatDimension' )
self:equals_deep( 'Call toTable to get data as table', instance.toTable(), dimensionAsTable )
self:equals_deep( 'Call toJSON to get data as JSON', mw.text.jsonDecode( instance.toJSON() ), dimensionAsTable )
self:equals( 'Call class to get the instance registered class', instance.class(), dimensionAsTable.class )
self:equals( 'Call get to get a single id and check its signature', instance.get( 'Horizontal' ).signature(), 'JSONstatAxis' )
self:equals( 'Call updated to get a single timestamp', instance.updated(), '2015-08-13T22:52:21Z')
self:equals_deep( 'Call id to get the ids on table form', instance.id(), dimensionAsTable.id )
self:equals_deep( 'Call size to get the sizes on table form', instance.size(), dimensionAsTable.size )
self:equals_deep( 'Call role to get the roles on table form', instance.role(), dimensionAsTable.role )
-- the test data is insufficient to test the metod "each"
end
function p:test_dataset()
local instance = jsonstat.Dataset( datasetAsTable )
self:equals( 'Recall signature', instance.signature(), 'JSONstatDataset' )
self:equals_deep( 'Call toTable to get data as table', instance.toTable(), datasetAsTable )
self:equals_deep( 'Call toJSON to get data as JSON', mw.text.jsonDecode( instance.toJSON() ), datasetAsTable )
self:equals( 'Call class to get the instance registered class', instance.class(), dimensionAsTable.class )
self:equals_deep( 'Call status to get the statuses on table form', instance.status(), datasetAsTable.status )
self:equals( 'Call label to get the single label', instance.label(), 'Humtidumpti')
self:equals( 'Call source to get the single source', instance.source(), 'Test Statistics')
self:equals( 'Call updated to get the single timestamp', instance.updated(), '2015-08-13T22:52:21Z')
self:equals_deep( 'Call value to get the values on table form', instance.value(), datasetAsTable.value )
-- the test data is insufficient tu test the method "value" for single value recall
self:equals( 'Call dimensjon to get it and check its signature', instance.dimension().signature(), 'JSONstatDimension' )
-- the test data is insufficient to test the method "each"
-- the test data is insufficient to test the method "expand"
-- the test data is insufficient tu test the method "slice"
end
function p:test_bundle()
local instance = jsonstat.Bundle( bundleAsTable )
self:equals( 'Recall signature', instance.signature(), 'JSONstatBundle' )
self:equals_deep( 'Call toTable to get data as table', instance.toTable(), bundleAsTable )
self:equals_deep( 'Call toJSON to get data as JSON', mw.text.jsonDecode( instance.toJSON() ), bundleAsTable )
self:equals( 'Call get to get a single dataset and check its signature', instance.get( 'foo' ).signature(), 'JSONstatDataset' )
self:equals( 'Call get to get a single dataset and check its signature', instance.get( 'baz' ).signature(), 'JSONstatDataset' )
self:equals( 'Call get to get a single non-existing dataset', instance.get( 'baz' ), bundleAsTable['baz'] )
end
return p