Testing the iconService singleton.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Checking path to images is computed according to traits
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, new MacOSLayoutTraits(LayoutTraits.Mode.Inline)).src.includes("macOS/Airplay.svg") is true
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, new IOSLayoutTraits(LayoutTraits.Mode.Inline)).src.includes("iOS/Airplay.svg") is true
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, new MacOSLayoutTraits(LayoutTraits.Mode.Fullscreen)).src.includes("macOS/Airplay-fullscreen.svg") is true

Checking fullscreen layout traits are ignored on iOS
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, new IOSLayoutTraits(LayoutTraits.Mode.Fullscreen)) === iconService.imageForIconAndLayoutTraits(Icons.Airplay, new IOSLayoutTraits(LayoutTraits.Mode.Inline)) is true

Checking requested images are cached
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, new MacOSLayoutTraits(LayoutTraits.Mode.Inline)) === iconService.imageForIconAndLayoutTraits(Icons.Airplay, new MacOSLayoutTraits(LayoutTraits.Mode.Inline)) is true
PASS successfullyParsed is true

TEST COMPLETE

