resources/doc/tutorials/test-results.md
# Tests Results
## Context
Date: Thu Jun 13 2024 11:56:35 GMT+0200 (Central European Summer Time)
Commit: [5909e54](git://github.com/ivmartel/dwv.git/commit/5909e54fa860694e4867a83d0a3446704373db3c)
Browser: Chrome Headless 125.0.6422.141 (Linux x86_64)
## Summary
Success: 163 ✅
Failed: 0 ❌
(total: 163, skipped: 0, total time: 1600ms)
## Tests details
(37 / 163 tests with requirement(s), 126 tests with no requirement)
### utils
- arrayContains: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~arraycontains))
- arraySortEquals: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~arraysortequals))
- Parse multipart: ✅
(URS [#DWV-REQ-IO-02-002 (Load DICOM multipart URL)](tutorial-user-stories.html#dwv-req-io-02-002-load-dicom-multipart-url), [jsdoc](module-tests_utils.html#~parse-multipart))
- isEqualRgb: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~isequalrgb))
- ybrToRgb: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~ybrtorgb))
- hexToRgb: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~hextorgb))
- isDarkColour: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~isdarkcolour))
- cielab to ciexyz: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~cielab-to-ciexyz))
- ciexyz to cielab: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~ciexyz-to-cielab))
- ciexyz to srgb: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~ciexyz-to-srgb))
- srgb to ciexyz: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~srgb-to-ciexyz))
- cielab to rgb: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~cielab-to-rgb))
- srgb to cielab: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~srgb-to-cielab))
- logging: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~logging))
- Merge objects: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~merge-objects))
- CapitaliseFirstLetter: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~capitalisefirstletter))
- StartsWith: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~startswith))
- EndsWith: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~endswith))
- getFlags: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~getflags))
- ReplaceFlags: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~replaceflags))
- getFileExtension: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~getfileextension))
- precisionRound: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~precisionround))
- ThreadPool class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~threadpool-class))
- getUrlFromUri: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_utils.html#~geturlfromuri))
- splitUri: ✅
(URS [#DWV-REQ-IO-02-005 (Window location URL scheme)](tutorial-user-stories.html#dwv-req-io-02-005-window-location-url-scheme), [jsdoc](module-tests_utils.html#~splituri))
- getURIQuery: ✅
(URS [#DWV-REQ-IO-02-005 (Window location URL scheme)](tutorial-user-stories.html#dwv-req-io-02-005-window-location-url-scheme), [jsdoc](module-tests_utils.html#~geturiquery))
- Decode Manifest: ✅
(URS [#DWV-REQ-IO-02-006 (Load Data Manifest URL)](tutorial-user-stories.html#dwv-req-io-02-006-load-data-manifest-url), [jsdoc](module-tests_utils.html#~decode-manifest))
### math
- BucketQueue class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~bucketqueue-class))
- Circle class: ✅
(URS [#DWV-REQ-UI-07-002 (Draw circle)](tutorial-user-stories.html#dwv-req-ui-07-002-draw-circle), [jsdoc](module-tests_math.html#~circle-class))
- Circle quantication: ✅
(URS [#DWV-REQ-UI-07-002 (Draw circle)](tutorial-user-stories.html#dwv-req-ui-07-002-draw-circle), [jsdoc](module-tests_math.html#~circle-quantication))
- Ellipse class: ✅
(URS [#DWV-REQ-UI-07-003 (Draw ellipse)](tutorial-user-stories.html#dwv-req-ui-07-003-draw-ellipse), [jsdoc](module-tests_math.html#~ellipse-class))
- Ellipse quantification: ✅
(URS [#DWV-REQ-UI-07-003 (Draw ellipse)](tutorial-user-stories.html#dwv-req-ui-07-003-draw-ellipse), [jsdoc](module-tests_math.html#~ellipse-quantification))
- Test getEllipseIndices: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~test-getellipseindices))
- Index class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~index-class))
- Index stringId: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~index-stringid))
- Line class: ✅
(URS [#DWV-REQ-UI-07-007 (Draw ruler)](tutorial-user-stories.html#dwv-req-ui-07-007-draw-ruler), [jsdoc](module-tests_math.html#~line-class))
- Angle between lines: ✅
(URS [#DWV-REQ-UI-07-005 (Draw protractor)](tutorial-user-stories.html#dwv-req-ui-07-005-draw-protractor), [jsdoc](module-tests_math.html#~angle-between-lines))
- Perpendicular line: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~perpendicular-line))
- Matrix33 class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-class))
- Matrix33 tostring: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-tostring))
- Matrix33 multiply vector: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-multiply-vector))
- Matrix33 multiply: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-multiply))
- Matrix33 inverse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-inverse))
- Matrix33 abs: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-abs))
- Matrix33 asOneAndZeros: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-asoneandzeros))
- Matrix33 factories: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~matrix33-factories))
- orientation matrix factories: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~orientation-matrix-factories))
- getOrientationStringLPS: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~getorientationstringlps))
- Path class: ✅
(URS [#DWV-REQ-UI-07-004 (Draw free hand)](tutorial-user-stories.html#dwv-req-ui-07-004-draw-free-hand), [jsdoc](module-tests_math.html#~path-class))
- Point2D class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~point2d-class))
- Point3D class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~point3d-class))
- Point class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~point-class))
- Rectangle class: ✅
(URS [#DWV-REQ-UI-07-006 (Draw rectangle)](tutorial-user-stories.html#dwv-req-ui-07-006-draw-rectangle), [jsdoc](module-tests_math.html#~rectangle-class))
- Rectangle quantification: ✅
(URS [#DWV-REQ-UI-07-006 (Draw rectangle)](tutorial-user-stories.html#dwv-req-ui-07-006-draw-rectangle), [jsdoc](module-tests_math.html#~rectangle-quantification))
- ROI class: ✅
(URS [#DWV-REQ-UI-07-008 (Draw ROI)](tutorial-user-stories.html#dwv-req-ui-07-008-draw-roi), [jsdoc](module-tests_math.html#~roi-class))
- getBasicStats: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~getbasicstats))
- getFullStats: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~getfullstats))
- GUID: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~guid))
- Vector3D class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~vector3d-class))
- Vector3D crossProduct: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~vector3d-crossproduct))
- Vector3D dotProduct: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_math.html#~vector3d-dotproduct))
### app
- DataController class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_app.html#~datacontroller-class))
### dicom
- DICOM code class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~dicom-code-class))
- DICOM dump: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~dicom-dump))
- Get DICOM Date: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~get-dicom-date))
- Get DICOM Time: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~get-dicom-time))
- Get DICOM datetime: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~get-dicom-datetime))
- Simple DICOM parsing: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~simple-dicom-parsing))
- DICOM sequence parsing: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~dicom-sequence-parsing))
- cleanString: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~cleanstring))
- DICOMDIR parsing: ✅
(URS [#DWV-REQ-IO-02-004 (Load DICOMDIR URL)](tutorial-user-stories.html#dwv-req-io-02-004-load-dicomdir-url), [jsdoc](module-tests_dicom.html#~dicomdir-parsing))
- getOrientationName: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~getorientationname))
- DICOM segment class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~dicom-segment-class))
- DICOM segment frame info class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~dicom-segment-frame-info-class))
- DICOM tag class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~dicom-tag-class))
- getTagFromDictionary: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~gettagfromdictionary))
- Test getUID: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_dicom.html#~test-getuid))
- Multiframe write: ✅
(URS [#DWV-REQ-IO-05-001 (Write DICOM file)](tutorial-user-stories.html#dwv-req-io-05-001-write-dicom-file), [jsdoc](module-tests_dicom.html#~multiframe-write))
- Write anonymised: ✅
(URS [#DWV-REQ-IO-05-002 (Write anonymised DICOM file)](tutorial-user-stories.html#dwv-req-io-05-002-write-anonymised-dicom-file), [jsdoc](module-tests_dicom.html#~write-anonymised))
- Write anonymised and add tags: ✅
(URS [#DWV-REQ-IO-05-002 (Write anonymised DICOM file)](tutorial-user-stories.html#dwv-req-io-05-002-write-anonymised-dicom-file), [jsdoc](module-tests_dicom.html#~write-anonymised-and-add-tags))
- Read/write synthetic explicit: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-explicit))
- Read/write synthetic explicit with rules: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-explicit-with-rules))
- Read/write synthetic implicit: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-implicit))
- Read/write synthetic implicit with rules: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-implicit-with-rules))
- Read/write synthetic explicit big endian: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-explicit-big-endian))
- Read/write synthetic explicit big endian with rules: ✅
(URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)), [jsdoc](module-tests_dicom.html#~read%2Fwrite-synthetic-explicit-big-endian-with-rules))
### io
- DICOM loader canloadurl: ✅
(URS [#DWV-REQ-IO-02-001 (Load DICOM discrete URL(s))](tutorial-user-stories.html#dwv-req-io-02-001-load-dicom-discrete-url(s)), [jsdoc](module-tests_io.html#~dicom-loader-canloadurl))
- JSON loader canloadurl: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_io.html#~json-loader-canloadurl))
- MemoryLoader events single frame: ✅
(URS [#DWV-REQ-IO-04-001 (DICOM load start event)](tutorial-user-stories.html#dwv-req-io-04-001-dicom-load-start-event), [jsdoc](module-tests_io.html#~memoryloader-events-single-frame))
- MemoryLoader events multi frame: ✅
(URS [#DWV-REQ-IO-04-001 (DICOM load start event)](tutorial-user-stories.html#dwv-req-io-04-001-dicom-load-start-event), [jsdoc](module-tests_io.html#~memoryloader-events-multi-frame))
- MemoryLoader events zip: ✅
(URS [#DWV-REQ-IO-04-001 (DICOM load start event)](tutorial-user-stories.html#dwv-req-io-04-001-dicom-load-start-event), [jsdoc](module-tests_io.html#~memoryloader-events-zip))
- Multipart loader canloadurl: ✅
(URS [#DWV-REQ-IO-02-002 (Load DICOM multipart URL)](tutorial-user-stories.html#dwv-req-io-02-002-load-dicom-multipart-url), [jsdoc](module-tests_io.html#~multipart-loader-canloadurl))
- RAW image loader canloadurl: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_io.html#~raw-image-loader-canloadurl))
- RAW image loader canloadurl: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_io.html#~raw-image-loader-canloadurl))
- ZIP loader canloadurl: ✅
(URS [#DWV-REQ-IO-02-003 (Load DICOM ZIP URL)](tutorial-user-stories.html#dwv-req-io-02-003-load-dicom-zip-url), [jsdoc](module-tests_io.html#~zip-loader-canloadurl))
### gui
- canCreateCanvas: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_gui.html#~cancreatecanvas))
- LayerGroup string id: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_gui.html#~layergroup-string-id))
- LayerGroup creation: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_gui.html#~layergroup-creation))
- LayerGroup add remove view layer: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_gui.html#~layergroup-add-remove-view-layer))
- LayerGroup add remove draw layer: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_gui.html#~layergroup-add-remove-draw-layer))
### image
- Geometry class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~geometry-class))
- Image getValue: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-getvalue))
- Image histogram: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-histogram))
- Image append slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-append-slice))
- Image convolute2D: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-convolute2d))
- Image transform: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-transform))
- Image compose: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~image-compose))
- ImageFactory: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~imagefactory))
- hasValues getOffsets: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~hasvalues-getoffsets))
- simpleRange iterator: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~simplerange-iterator))
- Range iterator axial: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~range-iterator-axial))
- Range iterator coronal: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~range-iterator-coronal))
- Range iterator sagittal: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~range-iterator-sagittal))
- RGB iterator: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~rgb-iterator))
- getSliceIterator: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~getsliceiterator))
- Region iterator: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~region-iterator))
- Size class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~size-class))
- Index to and from offset: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~index-to-and-from-offset))
- Spacing class: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~spacing-class))
- View wlchange event: ✅
(URS [#DWV-REQ-UI-03-001 (Change image window/level)](tutorial-user-stories.html#dwv-req-ui-03-001-change-image-window%2Flevel), [jsdoc](module-tests_image.html#~view-wlchange-event))
- Playback milliseconds: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_image.html#~playback-milliseconds))
- Generate data MONO: ✅
(URS [#DWV-REQ-UI-02-001 (Display image)](tutorial-user-stories.html#dwv-req-ui-02-001-display-image), [jsdoc](module-tests_image.html#~generate-data-mono))
- Generate data MONO with RSI: ✅
(URS [#DWV-REQ-UI-02-001 (Display image)](tutorial-user-stories.html#dwv-req-ui-02-001-display-image), [jsdoc](module-tests_image.html#~generate-data-mono-with-rsi))
- Generate data RGB: ✅
(URS [#DWV-REQ-UI-02-001 (Display image)](tutorial-user-stories.html#dwv-req-ui-02-001-display-image), [jsdoc](module-tests_image.html#~generate-data-rgb))
- Generate data timing: ✅
(URS [#DWV-REQ-UI-02-001 (Display image)](tutorial-user-stories.html#dwv-req-ui-02-001-display-image), [jsdoc](module-tests_image.html#~generate-data-timing))
### state
- Read v01 state line: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-line))
- Read v01 state roi: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-roi))
- Read v01 state ellipse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-ellipse))
- Read v01 state protractor: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-protractor))
- Read v01 state rectangle: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-rectangle))
- Read v01 state line multi-slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v01-state-line-multi-slice))
- Read v02 state arrow: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-arrow))
- Read v02 state ruler: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-ruler))
- Read v02 state roi: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-roi))
- Read v02 state hand: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-hand))
- Read v02 state ellipse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-ellipse))
- Read v02 state protractor: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-protractor))
- Read v02 state rectangle: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-rectangle))
- Read v02 state ruler multi-slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v02-state-ruler-multi-slice))
- Read v03 state arrow: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-arrow))
- Read v03 state ruler: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-ruler))
- Read v03 state roi: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-roi))
- Read v03 state hand: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-hand))
- Read v03 state ellipse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-ellipse))
- Read v03 state protractor: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-protractor))
- Read v03 state rectangle: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-rectangle))
- Read v03 state ruler multi-slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v03-state-ruler-multi-slice))
- Read v04 state arrow: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-arrow))
- Read v04 state ruler: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-ruler))
- Read v04 state roi: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-roi))
- Read v04 state hand: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-hand))
- Read v04 state ellipse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-ellipse))
- Read v04 state protractor: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-protractor))
- Read v04 state rectangle: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-rectangle))
- Read v04 state ruler multi-slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v04-state-ruler-multi-slice))
- Read v05 state arrow: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-arrow))
- Read v05 state ruler: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-ruler))
- Read v05 state roi: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-roi))
- Read v05 state hand: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-hand))
- Read v05 state ellipse: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-ellipse))
- Read v05 state protractor: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-protractor))
- Read v05 state rectangle: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-rectangle))
- Read v05 state ruler multi-slice: ✅
(⚠️ No requirement reference, [jsdoc](module-tests_state.html#~read-v05-state-ruler-multi-slice))
## Traceability
(19 / 50 tested requirements)
### io
URS [#DWV-REQ-IO-01-001 (Load DICOM file(s))](tutorial-user-stories.html#dwv-req-io-01-001-load-dicom-file(s)):
✅ Simple DICOM parsing
✅ DICOM sequence parsing
✅ Read/write synthetic explicit
✅ Read/write synthetic explicit with rules
✅ Read/write synthetic implicit
✅ Read/write synthetic implicit with rules
✅ Read/write synthetic explicit big endian
✅ Read/write synthetic explicit big endian with rules
URS [#DWV-REQ-IO-01-002 (Load DICOM ZIP file)](tutorial-user-stories.html#dwv-req-io-01-002-load-dicom-zip-file):
⚠️ No tests
URS [#DWV-REQ-IO-02-001 (Load DICOM discrete URL(s))](tutorial-user-stories.html#dwv-req-io-02-001-load-dicom-discrete-url(s)):
✅ DICOM loader canloadurl
URS [#DWV-REQ-IO-02-002 (Load DICOM multipart URL)](tutorial-user-stories.html#dwv-req-io-02-002-load-dicom-multipart-url):
✅ Parse multipart
✅ Multipart loader canloadurl
URS [#DWV-REQ-IO-02-003 (Load DICOM ZIP URL)](tutorial-user-stories.html#dwv-req-io-02-003-load-dicom-zip-url):
✅ ZIP loader canloadurl
URS [#DWV-REQ-IO-02-004 (Load DICOMDIR URL)](tutorial-user-stories.html#dwv-req-io-02-004-load-dicomdir-url):
✅ DICOMDIR parsing
URS [#DWV-REQ-IO-02-005 (Window location URL scheme)](tutorial-user-stories.html#dwv-req-io-02-005-window-location-url-scheme):
✅ splitUri
✅ getURIQuery
URS [#DWV-REQ-IO-02-006 (Load Data Manifest URL)](tutorial-user-stories.html#dwv-req-io-02-006-load-data-manifest-url):
✅ Decode Manifest
URS [#DWV-REQ-IO-03-001 (DICOM data load output)](tutorial-user-stories.html#dwv-req-io-03-001-dicom-data-load-output):
⚠️ No tests
URS [#DWV-REQ-IO-04-001 (DICOM load start event)](tutorial-user-stories.html#dwv-req-io-04-001-dicom-load-start-event):
✅ MemoryLoader events single frame
✅ MemoryLoader events multi frame
✅ MemoryLoader events zip
URS [#DWV-REQ-IO-04-002 (DICOM load progress event)](tutorial-user-stories.html#dwv-req-io-04-002-dicom-load-progress-event):
⚠️ No tests
URS [#DWV-REQ-IO-04-003 (DICOM load error event)](tutorial-user-stories.html#dwv-req-io-04-003-dicom-load-error-event):
⚠️ No tests
URS [#DWV-REQ-IO-04-004 (DICOM load abort event)](tutorial-user-stories.html#dwv-req-io-04-004-dicom-load-abort-event):
⚠️ No tests
URS [#DWV-REQ-IO-04-005 (DICOM load item event)](tutorial-user-stories.html#dwv-req-io-04-005-dicom-load-item-event):
⚠️ No tests
URS [#DWV-REQ-IO-04-006 (DICOM load event)](tutorial-user-stories.html#dwv-req-io-04-006-dicom-load-event):
⚠️ No tests
URS [#DWV-REQ-IO-04-007 (DICOM load end event)](tutorial-user-stories.html#dwv-req-io-04-007-dicom-load-end-event):
⚠️ No tests
URS [#DWV-REQ-IO-05-001 (Write DICOM file)](tutorial-user-stories.html#dwv-req-io-05-001-write-dicom-file):
✅ Multiframe write
URS [#DWV-REQ-IO-05-002 (Write anonymised DICOM file)](tutorial-user-stories.html#dwv-req-io-05-002-write-anonymised-dicom-file):
✅ Write anonymised
✅ Write anonymised and add tags
### ui
URS [#DWV-REQ-UI-01-001 (Integration in web application)](tutorial-user-stories.html#dwv-req-ui-01-001-integration-in-web-application):
⚠️ No tests
URS [#DWV-REQ-UI-02-001 (Display image)](tutorial-user-stories.html#dwv-req-ui-02-001-display-image):
✅ Generate data MONO
✅ Generate data MONO with RSI
✅ Generate data RGB
✅ Generate data timing
URS [#DWV-REQ-UI-02-002 (Image reorientation)](tutorial-user-stories.html#dwv-req-ui-02-002-image-reorientation):
⚠️ No tests
URS [#DWV-REQ-UI-02-003 (Image overlay)](tutorial-user-stories.html#dwv-req-ui-02-003-image-overlay):
⚠️ No tests
URS [#DWV-REQ-UI-03-001 (Change image window/level)](tutorial-user-stories.html#dwv-req-ui-03-001-change-image-window%2Flevel):
✅ View wlchange event
URS [#DWV-REQ-UI-03-002 (Change image position)](tutorial-user-stories.html#dwv-req-ui-03-002-change-image-position):
⚠️ No tests
URS [#DWV-REQ-UI-03-003 (Change image zoom/pan)](tutorial-user-stories.html#dwv-req-ui-03-003-change-image-zoom%2Fpan):
⚠️ No tests
URS [#DWV-REQ-UI-03-004 (Change image opacity)](tutorial-user-stories.html#dwv-req-ui-03-004-change-image-opacity):
⚠️ No tests
URS [#DWV-REQ-UI-04-001 (Views window/level synchronisation)](tutorial-user-stories.html#dwv-req-ui-04-001-views-window%2Flevel-synchronisation):
⚠️ No tests
URS [#DWV-REQ-UI-04-002 (Views position synchronisation)](tutorial-user-stories.html#dwv-req-ui-04-002-views-position-synchronisation):
⚠️ No tests
URS [#DWV-REQ-UI-04-003 (Views zoom/pan synchronisation)](tutorial-user-stories.html#dwv-req-ui-04-003-views-zoom%2Fpan-synchronisation):
⚠️ No tests
URS [#DWV-REQ-UI-04-004 (Views opacity synchronisation)](tutorial-user-stories.html#dwv-req-ui-04-004-views-opacity-synchronisation):
⚠️ No tests
URS [#DWV-REQ-UI-05-001 (Window/Level tool)](tutorial-user-stories.html#dwv-req-ui-05-001-window%2Flevel-tool):
⚠️ No tests
URS [#DWV-REQ-UI-05-002 (Window/Level presets)](tutorial-user-stories.html#dwv-req-ui-05-002-window%2Flevel-presets):
⚠️ No tests
URS [#DWV-REQ-UI-05-003 (Slice scroll tool)](tutorial-user-stories.html#dwv-req-ui-05-003-slice-scroll-tool):
⚠️ No tests
URS [#DWV-REQ-UI-05-004 (Zoom/Pan tool)](tutorial-user-stories.html#dwv-req-ui-05-004-zoom%2Fpan-tool):
⚠️ No tests
URS [#DWV-REQ-UI-05-005 (Opacity tool)](tutorial-user-stories.html#dwv-req-ui-05-005-opacity-tool):
⚠️ No tests
URS [#DWV-REQ-UI-06-001 (Image thresholding)](tutorial-user-stories.html#dwv-req-ui-06-001-image-thresholding):
⚠️ No tests
URS [#DWV-REQ-UI-06-002 (Image contrast enhancement)](tutorial-user-stories.html#dwv-req-ui-06-002-image-contrast-enhancement):
⚠️ No tests
URS [#DWV-REQ-UI-06-003 (Image contour extraction)](tutorial-user-stories.html#dwv-req-ui-06-003-image-contour-extraction):
⚠️ No tests
URS [#DWV-REQ-UI-07-001 (Draw arrow)](tutorial-user-stories.html#dwv-req-ui-07-001-draw-arrow):
⚠️ No tests
URS [#DWV-REQ-UI-07-002 (Draw circle)](tutorial-user-stories.html#dwv-req-ui-07-002-draw-circle):
✅ Circle class
✅ Circle quantication
URS [#DWV-REQ-UI-07-003 (Draw ellipse)](tutorial-user-stories.html#dwv-req-ui-07-003-draw-ellipse):
✅ Ellipse class
✅ Ellipse quantification
URS [#DWV-REQ-UI-07-004 (Draw free hand)](tutorial-user-stories.html#dwv-req-ui-07-004-draw-free-hand):
✅ Path class
URS [#DWV-REQ-UI-07-005 (Draw protractor)](tutorial-user-stories.html#dwv-req-ui-07-005-draw-protractor):
✅ Angle between lines
URS [#DWV-REQ-UI-07-006 (Draw rectangle)](tutorial-user-stories.html#dwv-req-ui-07-006-draw-rectangle):
✅ Rectangle class
✅ Rectangle quantification
URS [#DWV-REQ-UI-07-007 (Draw ruler)](tutorial-user-stories.html#dwv-req-ui-07-007-draw-ruler):
✅ Line class
URS [#DWV-REQ-UI-07-008 (Draw ROI)](tutorial-user-stories.html#dwv-req-ui-07-008-draw-roi):
✅ ROI class
URS [#DWV-REQ-UI-08-001 (Draw delete)](tutorial-user-stories.html#dwv-req-ui-08-001-draw-delete):
⚠️ No tests
URS [#DWV-REQ-UI-08-002 (Draw action undo/redo)](tutorial-user-stories.html#dwv-req-ui-08-002-draw-action-undo%2Fredo):
⚠️ No tests
URS [#DWV-REQ-UI-09-001 (Livewire)](tutorial-user-stories.html#dwv-req-ui-09-001-livewire):
⚠️ No tests
URS [#DWV-REQ-UI-09-002 (Floodfill)](tutorial-user-stories.html#dwv-req-ui-09-002-floodfill):
⚠️ No tests