ivmartel/dwv

View on GitHub
resources/doc/tutorials/test-results.md

Summary

Maintainability
Test Coverage
# 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