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, LayoutTraits.macOS).src.includes("macOS/Airplay.svg") is true
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, LayoutTraits.iOS).src.includes("iOS/Airplay.svg") is true
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS | LayoutTraits.Fullscreen).src.includes("macOS/Airplay-fullscreen.svg") is true

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

Checking requested images are cached
PASS iconService.imageForIconAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS) === iconService.imageForIconAndLayoutTraits(Icons.Airplay, LayoutTraits.macOS) is true
PASS successfullyParsed is true

TEST COMPLETE

