| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191 |
- // This file is autogenerated.
- // Ideally it wouldn't exist, but it's here to test cjs in node
- // Changes should go into ./test.js, and if new assertions are needed
- // they'll need to be shimmed here as well
- const tinycolor = require("./tinycolor.js");
- const { Deno, testDefinitions } = require("@deno/shim-deno-test");
- async function runDenoTests() {
- for (const test of testDefinitions) {
- if (test.ignore) {
- console.log(`Ignoring ${test.name}`);
- continue;
- }
- console.log(`Running ${test.name}`);
- await test.fn();
- console.log(`> Passed ${test.name}`);
- }
- }
- (async () => {
- const { assertEquals, assert, assertThrows } = await import(
- "../deno_asserts@0.168.0.mjs"
- );
- // TEST_BEGINS_HERE
- Deno.test("TinyColor initialization", function () {
- assert(
- typeof tinycolor != "undefined",
- "tinycolor is initialized on the page"
- );
- assert(
- typeof tinycolor("red") == "object",
- "tinycolor is able to be instantiated"
- );
- var r = tinycolor("red");
- assert(
- tinycolor(r) === r,
- "when given a tinycolor instance, tinycolor() returns it"
- );
- assert(
- new tinycolor(r) === r,
- "when given a tinycolor instance, new tinycolor() returns it"
- );
- assertEquals(
- tinycolor("red", { format: "hex" }).toString(),
- "#ff0000",
- "tinycolor options are being parsed"
- );
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 0, b: 0 }, { format: "hex" }).toString(),
- "#ff0000",
- "tinycolor options are being parsed"
- );
- var obj = { h: 180, s: 0.5, l: 0.5 };
- var color = tinycolor(obj);
- assert(
- obj.s === 0.5,
- "when given an object, the original object is not modified"
- );
- });
- Deno.test("Original input", function () {
- var colorRgbUp = "RGB(39, 39, 39)";
- var colorRgbLow = "rgb(39, 39, 39)";
- var colorRgbMix = "RgB(39, 39, 39)";
- var tinycolorObj = tinycolor(colorRgbMix);
- var inputObj = { r: 100, g: 100, b: 100 };
- var r = tinycolor("red");
- assert(
- tinycolor(colorRgbLow).getOriginalInput() === colorRgbLow,
- "original lowercase input is returned"
- );
- assert(
- tinycolor(colorRgbUp).getOriginalInput() === colorRgbUp,
- "original uppercase input is returned"
- );
- assert(
- tinycolor(colorRgbMix).getOriginalInput() === colorRgbMix,
- "original mixed input is returned"
- );
- assert(
- tinycolor(tinycolorObj).getOriginalInput() === colorRgbMix,
- "when given a tinycolor instance, the color string is returned"
- );
- assert(
- tinycolor(inputObj).getOriginalInput() === inputObj,
- "when given an object, the object is returned"
- );
- assert(
- new tinycolor("").getOriginalInput() === "",
- "when given an empty string, an empty string is returned"
- );
- assert(
- new tinycolor(null).getOriginalInput() === "",
- "when given a null value, an empty string is returned"
- );
- });
- Deno.test("Cloning color", function () {
- var originalColor = tinycolor("red");
- var originalColorRgbString = originalColor.toRgbString();
- var clonedColor = originalColor.clone();
- assert(
- clonedColor.toRgbString() === originalColor.toRgbString(),
- "cloned color is identical"
- );
- clonedColor.setAlpha(0.5);
- assert(
- clonedColor.toRgbString() !== originalColor.toRgbString(),
- "cloned color is changing independently from original color"
- );
- assert(
- originalColorRgbString === originalColor.toRgbString(),
- "original color was not changed by cloned color change"
- );
- });
- Deno.test("Random color", function () {
- var randomColor = tinycolor.random();
- assertEquals(randomColor.getAlpha(), 1);
- assertEquals(randomColor.getFormat(), "prgb");
- randomColor.setAlpha(0.5);
- assertEquals(randomColor.toHex8String().slice(-2), "80");
- });
- // Taken from convertWikipediaColors.html
- var conversions = [
- {
- hex: "#FFFFFF",
- hex8: "#FFFFFFFF",
- rgb: { r: "100.0%", g: "100.0%", b: "100.0%" },
- hsv: { h: "0", s: "0.000", v: "1.000" },
- hsl: { h: "0", s: "0.000", l: "1.000" },
- },
- {
- hex: "#808080",
- hex8: "#808080FF",
- rgb: { r: "050.0%", g: "050.0%", b: "050.0%" },
- hsv: { h: "0", s: "0.000", v: "0.500" },
- hsl: { h: "0", s: "0.000", l: "0.500" },
- },
- {
- hex: "#000000",
- hex8: "#000000FF",
- rgb: { r: "000.0%", g: "000.0%", b: "000.0%" },
- hsv: { h: "0", s: "0.000", v: "0.000" },
- hsl: { h: "0", s: "0.000", l: "0.000" },
- },
- {
- hex: "#FF0000",
- hex8: "#FF0000FF",
- rgb: { r: "100.0%", g: "000.0%", b: "000.0%" },
- hsv: { h: "0.0", s: "1.000", v: "1.000" },
- hsl: { h: "0.0", s: "1.000", l: "0.500" },
- },
- {
- hex: "#BFBF00",
- hex8: "#BFBF00FF",
- rgb: { r: "075.0%", g: "075.0%", b: "000.0%" },
- hsv: { h: "60.0", s: "1.000", v: "0.750" },
- hsl: { h: "60.0", s: "1.000", l: "0.375" },
- },
- {
- hex: "#008000",
- hex8: "#008000FF",
- rgb: { r: "000.0%", g: "050.0%", b: "000.0%" },
- hsv: { h: "120.0", s: "1.000", v: "0.500" },
- hsl: { h: "120.0", s: "1.000", l: "0.250" },
- },
- {
- hex: "#80FFFF",
- hex8: "#80FFFFFF",
- rgb: { r: "050.0%", g: "100.0%", b: "100.0%" },
- hsv: { h: "180.0", s: "0.500", v: "1.000" },
- hsl: { h: "180.0", s: "1.000", l: "0.750" },
- },
- {
- hex: "#8080FF",
- hex8: "#8080FFFF",
- rgb: { r: "050.0%", g: "050.0%", b: "100.0%" },
- hsv: { h: "240.0", s: "0.500", v: "1.000" },
- hsl: { h: "240.0", s: "1.000", l: "0.750" },
- },
- {
- hex: "#BF40BF",
- hex8: "#BF40BFFF",
- rgb: { r: "075.0%", g: "025.0%", b: "075.0%" },
- hsv: { h: "300.0", s: "0.667", v: "0.750" },
- hsl: { h: "300.0", s: "0.500", l: "0.500" },
- },
- {
- hex: "#A0A424",
- hex8: "#A0A424FF",
- rgb: { r: "062.8%", g: "064.3%", b: "014.2%" },
- hsv: { h: "61.8", s: "0.779", v: "0.643" },
- hsl: { h: "61.8", s: "0.638", l: "0.393" },
- },
- {
- hex: "#1EAC41",
- hex8: "#1EAC41FF",
- rgb: { r: "011.6%", g: "067.5%", b: "025.5%" },
- hsv: { h: "134.9", s: "0.828", v: "0.675" },
- hsl: { h: "134.9", s: "0.707", l: "0.396" },
- },
- {
- hex: "#B430E5",
- hex8: "#B430E5FF",
- rgb: { r: "070.4%", g: "018.7%", b: "089.7%" },
- hsv: { h: "283.7", s: "0.792", v: "0.897" },
- hsl: { h: "283.7", s: "0.775", l: "0.542" },
- },
- {
- hex: "#FEF888",
- hex8: "#FEF888FF",
- rgb: { r: "099.8%", g: "097.4%", b: "053.2%" },
- hsv: { h: "56.9", s: "0.467", v: "0.998" },
- hsl: { h: "56.9", s: "0.991", l: "0.765" },
- },
- {
- hex: "#19CB97",
- hex8: "#19CB97FF",
- rgb: { r: "009.9%", g: "079.5%", b: "059.1%" },
- hsv: { h: "162.4", s: "0.875", v: "0.795" },
- hsl: { h: "162.4", s: "0.779", l: "0.447" },
- },
- {
- hex: "#362698",
- hex8: "#362698FF",
- rgb: { r: "021.1%", g: "014.9%", b: "059.7%" },
- hsv: { h: "248.3", s: "0.750", v: "0.597" },
- hsl: { h: "248.3", s: "0.601", l: "0.373" },
- },
- {
- hex: "#7E7EB8",
- hex8: "#7E7EB8FF",
- rgb: { r: "049.5%", g: "049.3%", b: "072.1%" },
- hsv: { h: "240.5", s: "0.316", v: "0.721" },
- hsl: { h: "240.5", s: "0.290", l: "0.607" },
- },
- ];
- Deno.test("Color Equality", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assert(true, tiny.isValid());
- assert(
- true,
- "Testing " +
- c.hex +
- ": " +
- tiny.toRgbString() +
- " " +
- tiny.toPercentageRgbString() +
- " " +
- tiny.toHsvString() +
- " " +
- tiny.toHslString() +
- " " +
- tiny.toHexString() +
- "Original: " +
- JSON.stringify(c.rgb) +
- " " +
- JSON.stringify(c.hsv) +
- " " +
- JSON.stringify(c.hsl)
- );
- assert(tinycolor.equals(c.rgb, c.hex), "RGB equals hex " + c.hex);
- assert(tinycolor.equals(c.rgb, c.hex8), "RGB equals hex " + c.hex);
- assert(tinycolor.equals(c.rgb, c.hsl), "RGB equals HSL " + c.hex);
- assert(tinycolor.equals(c.rgb, c.hsv), "RGB equals HSV " + c.hex);
- assert(tinycolor.equals(c.rgb, c.rgb), "RGB equals RGB " + c.hex);
- assert(tinycolor.equals(c.hex, c.hex), "hex equals hex " + c.hex);
- assert(tinycolor.equals(c.hex, c.hex8), "hex equals hex8 " + c.hex);
- assert(tinycolor.equals(c.hex, c.hsl), "hex equals HSL " + c.hex);
- assert(tinycolor.equals(c.hex, c.hsv), "hex equals HSV " + c.hex);
- assert(tinycolor.equals(c.hsl, c.hsv), "HSL equals HSV " + c.hex);
- }
- });
- Deno.test("With Ratio", function () {
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 1, b: 1 }).toHexString(),
- "#ffffff",
- "white"
- );
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 0, b: 0, a: 0.5 }).toRgbString(),
- "rgba(255, 0, 0, 0.5)",
- "alpha works when ratio is parsed"
- );
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 0, b: 0, a: 1 }).toRgbString(),
- "rgb(255, 0, 0)",
- "alpha = 1 works when ratio is parsed"
- );
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 0, b: 0, a: 10 }).toRgbString(),
- "rgb(255, 0, 0)",
- "alpha > 1 works when ratio is parsed"
- );
- assertEquals(
- tinycolor.fromRatio({ r: 1, g: 0, b: 0, a: -1 }).toRgbString(),
- "rgb(255, 0, 0)",
- "alpha < 1 works when ratio is parsed"
- );
- });
- Deno.test("Without Ratio", function () {
- assertEquals(
- tinycolor({ r: 1, g: 1, b: 1 }).toHexString(),
- "#010101",
- "010101"
- );
- assertEquals(
- tinycolor({ r: 0.1, g: 0.1, b: 0.1 }).toHexString(),
- "#000000",
- "000000"
- );
- assertEquals(tinycolor("rgb .1 .1 .1").toHexString(), "#000000", "000000");
- });
- Deno.test("RGB Text Parsing", function () {
- assertEquals(
- tinycolor("rgb 255 0 0").toHexString(),
- "#ff0000",
- "spaced input"
- );
- assertEquals(
- tinycolor("rgb(255, 0, 0)").toHexString(),
- "#ff0000",
- "parenthesized input"
- );
- assertEquals(
- tinycolor("rgb (255, 0, 0)").toHexString(),
- "#ff0000",
- "parenthesized spaced input"
- );
- assertEquals(
- tinycolor({ r: 255, g: 0, b: 0 }).toHexString(),
- "#ff0000",
- "object input"
- );
- assertEquals(
- tinycolor({ r: 255, g: 0, b: 0 }).toRgb(),
- {
- r: 255,
- g: 0,
- b: 0,
- a: 1,
- },
- "object input and compare"
- );
- assert(tinycolor.equals({ r: 200, g: 100, b: 0 }, "rgb(200, 100, 0)"));
- assert(tinycolor.equals({ r: 200, g: 100, b: 0 }, "rgb 200 100 0"));
- assert(tinycolor.equals({ r: 200, g: 100, b: 0 }, "rgb 200 100 0"));
- assert(
- tinycolor.equals({ r: 200, g: 100, b: 0, a: 0.4 }, "rgba 200 100 0 .4")
- );
- assert(!tinycolor.equals({ r: 199, g: 100, b: 0 }, "rgba 200 100 0 1"));
- assert(!tinycolor.equals({ r: 199, g: 100, b: 0 }, "rgb(200, 100, 0)"));
- assert(!tinycolor.equals({ r: 199, g: 100, b: 0 }, "rgb 200 100 0"));
- assert(!tinycolor.equals({ r: 199, g: 100, b: 0 }, "rgb 200 100 0"));
- assert(
- tinycolor.equals(tinycolor({ r: 200, g: 100, b: 0 }), "rgb(200, 100, 0)")
- );
- assert(
- tinycolor.equals(tinycolor({ r: 200, g: 100, b: 0 }), "rgb 200 100 0")
- );
- assert(
- tinycolor.equals(tinycolor({ r: 200, g: 100, b: 0 }), "rgb 200 100 0")
- );
- });
- Deno.test("Percentage RGB Text Parsing", function () {
- assertEquals(
- tinycolor("rgb 100% 0% 0%").toHexString(),
- "#ff0000",
- "spaced input"
- );
- assertEquals(
- tinycolor("rgb(100%, 0%, 0%)").toHexString(),
- "#ff0000",
- "parenthesized input"
- );
- assertEquals(
- tinycolor("rgb (100%, 0%, 0%)").toHexString(),
- "#ff0000",
- "parenthesized spaced input"
- );
- assertEquals(
- tinycolor({ r: "100%", g: "0%", b: "0%" }).toHexString(),
- "#ff0000",
- "object input"
- );
- assertEquals(
- tinycolor({ r: "100%", g: "0%", b: "0%" }).toRgb(),
- {
- r: 255,
- g: 0,
- b: 0,
- a: 1,
- },
- "object input and compare"
- );
- assert(
- tinycolor.equals({ r: "90%", g: "45%", b: "0%" }, "rgb(90%, 45%, 0%)")
- );
- assert(tinycolor.equals({ r: "90%", g: "45%", b: "0%" }, "rgb 90% 45% 0%"));
- assert(tinycolor.equals({ r: "90%", g: "45%", b: "0%" }, "rgb 90% 45% 0%"));
- assert(
- tinycolor.equals(
- { r: "90%", g: "45%", b: "0%", a: 0.4 },
- "rgba 90% 45% 0% .4"
- )
- );
- assert(
- !tinycolor.equals({ r: "89%", g: "45%", b: "0%" }, "rgba 90% 45% 0% 1")
- );
- assert(
- !tinycolor.equals({ r: "89%", g: "45%", b: "0%" }, "rgb(90%, 45%, 0%)")
- );
- assert(!tinycolor.equals({ r: "89%", g: "45%", b: "0%" }, "rgb 90% 45% 0%"));
- assert(!tinycolor.equals({ r: "89%", g: "45%", b: "0%" }, "rgb 90% 45% 0%"));
- assert(
- tinycolor.equals(
- tinycolor({ r: "90%", g: "45%", b: "0%" }),
- "rgb(90%, 45%, 0%)"
- )
- );
- assert(
- tinycolor.equals(
- tinycolor({ r: "90%", g: "45%", b: "0%" }),
- "rgb 90% 45% 0%"
- )
- );
- assert(
- tinycolor.equals(
- tinycolor({ r: "90%", g: "45%", b: "0%" }),
- "rgb 90% 45% 0%"
- )
- );
- });
- Deno.test("HSL parsing", function () {
- assertEquals(
- tinycolor({ h: 251, s: 100, l: 0.38 }).toHexString(),
- "#2400c2",
- "to hex"
- );
- assertEquals(
- tinycolor({ h: 251, s: 100, l: 0.38 }).toRgbString(),
- "rgb(36, 0, 194)",
- "to rgb"
- );
- assertEquals(
- tinycolor({ h: 251, s: 100, l: 0.38 }).toHslString(),
- "hsl(251, 100%, 38%)",
- "to hsl"
- );
- assertEquals(
- tinycolor({ h: 251, s: 100, l: 0.38, a: 0.5 }).toHslString(),
- "hsla(251, 100%, 38%, 0.5)",
- "to hsla"
- );
- assertEquals(
- tinycolor("hsl(251, 100, 38)").toHexString(),
- "#2400c2",
- "to hex"
- );
- assertEquals(
- tinycolor("hsl(251, 100%, 38%)").toRgbString(),
- "rgb(36, 0, 194)",
- "to rgb"
- );
- assertEquals(
- tinycolor("hsl(251, 100%, 38%)").toHslString(),
- "hsl(251, 100%, 38%)",
- "to hsl"
- );
- assertEquals(
- tinycolor("hsl 100 20 10").toHslString(),
- "hsl(100, 20%, 10%)",
- "problematic hsl"
- );
- });
- Deno.test("Hex Parsing", function () {
- assertEquals(tinycolor("rgb 255 0 0").toHexString(), "#ff0000");
- assertEquals(tinycolor("rgb 255 0 0").toHexString(true), "#f00");
- assertEquals(tinycolor("rgba 255 0 0 0.5").toHex8String(), "#ff000080");
- assertEquals(tinycolor("rgba 255 0 0 0").toHex8String(), "#ff000000");
- assertEquals(tinycolor("rgba 255 0 0 1").toHex8String(), "#ff0000ff");
- assertEquals(tinycolor("rgba 255 0 0 1").toHex8String(true), "#f00f");
- assertEquals(tinycolor("rgb 255 0 0").toHex(), "ff0000");
- assertEquals(tinycolor("rgb 255 0 0").toHex(true), "f00");
- assertEquals(tinycolor("rgba 255 0 0 0.5").toHex8(), "ff000080");
- });
- Deno.test("HSV Parsing", function () {
- assertEquals(
- tinycolor("hsv 251.1 0.887 .918").toHsvString(),
- "hsv(251, 89%, 92%)"
- );
- assertEquals(
- tinycolor("hsv 251.1 0.887 0.918").toHsvString(),
- "hsv(251, 89%, 92%)"
- );
- assertEquals(
- tinycolor("hsva 251.1 0.887 0.918 0.5").toHsvString(),
- "hsva(251, 89%, 92%, 0.5)"
- );
- });
- Deno.test("Invalid Parsing", function () {
- var invalidColor = tinycolor("this is not a color");
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor("#red");
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor(" #red");
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor("##123456");
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor(" ##123456");
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor({ r: "invalid", g: "invalid", b: "invalid" });
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor({ h: "invalid", s: "invalid", l: "invalid" });
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- invalidColor = tinycolor({ h: "invalid", s: "invalid", v: "invalid" });
- assertEquals(invalidColor.toHexString(), "#000000");
- assertEquals(false, invalidColor.isValid());
- });
- Deno.test("Named colors", function () {
- assertEquals(tinycolor("aliceblue").toHex(), "f0f8ff");
- assertEquals(tinycolor("antiquewhite").toHex(), "faebd7");
- assertEquals(tinycolor("aqua").toHex(), "00ffff");
- assertEquals(tinycolor("aquamarine").toHex(), "7fffd4");
- assertEquals(tinycolor("azure").toHex(), "f0ffff");
- assertEquals(tinycolor("beige").toHex(), "f5f5dc");
- assertEquals(tinycolor("bisque").toHex(), "ffe4c4");
- assertEquals(tinycolor("black").toHex(), "000000");
- assertEquals(tinycolor("blanchedalmond").toHex(), "ffebcd");
- assertEquals(tinycolor("blue").toHex(), "0000ff");
- assertEquals(tinycolor("blueviolet").toHex(), "8a2be2");
- assertEquals(tinycolor("brown").toHex(), "a52a2a");
- assertEquals(tinycolor("burlywood").toHex(), "deb887");
- assertEquals(tinycolor("cadetblue").toHex(), "5f9ea0");
- assertEquals(tinycolor("chartreuse").toHex(), "7fff00");
- assertEquals(tinycolor("chocolate").toHex(), "d2691e");
- assertEquals(tinycolor("coral").toHex(), "ff7f50");
- assertEquals(tinycolor("cornflowerblue").toHex(), "6495ed");
- assertEquals(tinycolor("cornsilk").toHex(), "fff8dc");
- assertEquals(tinycolor("crimson").toHex(), "dc143c");
- assertEquals(tinycolor("cyan").toHex(), "00ffff");
- assertEquals(tinycolor("darkblue").toHex(), "00008b");
- assertEquals(tinycolor("darkcyan").toHex(), "008b8b");
- assertEquals(tinycolor("darkgoldenrod").toHex(), "b8860b");
- assertEquals(tinycolor("darkgray").toHex(), "a9a9a9");
- assertEquals(tinycolor("darkgreen").toHex(), "006400");
- assertEquals(tinycolor("darkkhaki").toHex(), "bdb76b");
- assertEquals(tinycolor("darkmagenta").toHex(), "8b008b");
- assertEquals(tinycolor("darkolivegreen").toHex(), "556b2f");
- assertEquals(tinycolor("darkorange").toHex(), "ff8c00");
- assertEquals(tinycolor("darkorchid").toHex(), "9932cc");
- assertEquals(tinycolor("darkred").toHex(), "8b0000");
- assertEquals(tinycolor("darksalmon").toHex(), "e9967a");
- assertEquals(tinycolor("darkseagreen").toHex(), "8fbc8f");
- assertEquals(tinycolor("darkslateblue").toHex(), "483d8b");
- assertEquals(tinycolor("darkslategray").toHex(), "2f4f4f");
- assertEquals(tinycolor("darkturquoise").toHex(), "00ced1");
- assertEquals(tinycolor("darkviolet").toHex(), "9400d3");
- assertEquals(tinycolor("deeppink").toHex(), "ff1493");
- assertEquals(tinycolor("deepskyblue").toHex(), "00bfff");
- assertEquals(tinycolor("dimgray").toHex(), "696969");
- assertEquals(tinycolor("dodgerblue").toHex(), "1e90ff");
- assertEquals(tinycolor("firebrick").toHex(), "b22222");
- assertEquals(tinycolor("floralwhite").toHex(), "fffaf0");
- assertEquals(tinycolor("forestgreen").toHex(), "228b22");
- assertEquals(tinycolor("fuchsia").toHex(), "ff00ff");
- assertEquals(tinycolor("gainsboro").toHex(), "dcdcdc");
- assertEquals(tinycolor("ghostwhite").toHex(), "f8f8ff");
- assertEquals(tinycolor("gold").toHex(), "ffd700");
- assertEquals(tinycolor("goldenrod").toHex(), "daa520");
- assertEquals(tinycolor("gray").toHex(), "808080");
- assertEquals(tinycolor("grey").toHex(), "808080");
- assertEquals(tinycolor("green").toHex(), "008000");
- assertEquals(tinycolor("greenyellow").toHex(), "adff2f");
- assertEquals(tinycolor("honeydew").toHex(), "f0fff0");
- assertEquals(tinycolor("hotpink").toHex(), "ff69b4");
- assertEquals(tinycolor("indianred ").toHex(), "cd5c5c");
- assertEquals(tinycolor("indigo ").toHex(), "4b0082");
- assertEquals(tinycolor("ivory").toHex(), "fffff0");
- assertEquals(tinycolor("khaki").toHex(), "f0e68c");
- assertEquals(tinycolor("lavender").toHex(), "e6e6fa");
- assertEquals(tinycolor("lavenderblush").toHex(), "fff0f5");
- assertEquals(tinycolor("lawngreen").toHex(), "7cfc00");
- assertEquals(tinycolor("lemonchiffon").toHex(), "fffacd");
- assertEquals(tinycolor("lightblue").toHex(), "add8e6");
- assertEquals(tinycolor("lightcoral").toHex(), "f08080");
- assertEquals(tinycolor("lightcyan").toHex(), "e0ffff");
- assertEquals(tinycolor("lightgoldenrodyellow").toHex(), "fafad2");
- assertEquals(tinycolor("lightgrey").toHex(), "d3d3d3");
- assertEquals(tinycolor("lightgreen").toHex(), "90ee90");
- assertEquals(tinycolor("lightpink").toHex(), "ffb6c1");
- assertEquals(tinycolor("lightsalmon").toHex(), "ffa07a");
- assertEquals(tinycolor("lightseagreen").toHex(), "20b2aa");
- assertEquals(tinycolor("lightskyblue").toHex(), "87cefa");
- assertEquals(tinycolor("lightslategray").toHex(), "778899");
- assertEquals(tinycolor("lightsteelblue").toHex(), "b0c4de");
- assertEquals(tinycolor("lightyellow").toHex(), "ffffe0");
- assertEquals(tinycolor("lime").toHex(), "00ff00");
- assertEquals(tinycolor("limegreen").toHex(), "32cd32");
- assertEquals(tinycolor("linen").toHex(), "faf0e6");
- assertEquals(tinycolor("magenta").toHex(), "ff00ff");
- assertEquals(tinycolor("maroon").toHex(), "800000");
- assertEquals(tinycolor("mediumaquamarine").toHex(), "66cdaa");
- assertEquals(tinycolor("mediumblue").toHex(), "0000cd");
- assertEquals(tinycolor("mediumorchid").toHex(), "ba55d3");
- assertEquals(tinycolor("mediumpurple").toHex(), "9370db");
- assertEquals(tinycolor("mediumseagreen").toHex(), "3cb371");
- assertEquals(tinycolor("mediumslateblue").toHex(), "7b68ee");
- assertEquals(tinycolor("mediumspringgreen").toHex(), "00fa9a");
- assertEquals(tinycolor("mediumturquoise").toHex(), "48d1cc");
- assertEquals(tinycolor("mediumvioletred").toHex(), "c71585");
- assertEquals(tinycolor("midnightblue").toHex(), "191970");
- assertEquals(tinycolor("mintcream").toHex(), "f5fffa");
- assertEquals(tinycolor("mistyrose").toHex(), "ffe4e1");
- assertEquals(tinycolor("moccasin").toHex(), "ffe4b5");
- assertEquals(tinycolor("navajowhite").toHex(), "ffdead");
- assertEquals(tinycolor("navy").toHex(), "000080");
- assertEquals(tinycolor("oldlace").toHex(), "fdf5e6");
- assertEquals(tinycolor("olive").toHex(), "808000");
- assertEquals(tinycolor("olivedrab").toHex(), "6b8e23");
- assertEquals(tinycolor("orange").toHex(), "ffa500");
- assertEquals(tinycolor("orangered").toHex(), "ff4500");
- assertEquals(tinycolor("orchid").toHex(), "da70d6");
- assertEquals(tinycolor("palegoldenrod").toHex(), "eee8aa");
- assertEquals(tinycolor("palegreen").toHex(), "98fb98");
- assertEquals(tinycolor("paleturquoise").toHex(), "afeeee");
- assertEquals(tinycolor("palevioletred").toHex(), "db7093");
- assertEquals(tinycolor("papayawhip").toHex(), "ffefd5");
- assertEquals(tinycolor("peachpuff").toHex(), "ffdab9");
- assertEquals(tinycolor("peru").toHex(), "cd853f");
- assertEquals(tinycolor("pink").toHex(), "ffc0cb");
- assertEquals(tinycolor("plum").toHex(), "dda0dd");
- assertEquals(tinycolor("powderblue").toHex(), "b0e0e6");
- assertEquals(tinycolor("purple").toHex(), "800080");
- assertEquals(tinycolor("rebeccapurple").toHex(), "663399");
- assertEquals(tinycolor("red").toHex(), "ff0000");
- assertEquals(tinycolor("rosybrown").toHex(), "bc8f8f");
- assertEquals(tinycolor("royalblue").toHex(), "4169e1");
- assertEquals(tinycolor("saddlebrown").toHex(), "8b4513");
- assertEquals(tinycolor("salmon").toHex(), "fa8072");
- assertEquals(tinycolor("sandybrown").toHex(), "f4a460");
- assertEquals(tinycolor("seagreen").toHex(), "2e8b57");
- assertEquals(tinycolor("seashell").toHex(), "fff5ee");
- assertEquals(tinycolor("sienna").toHex(), "a0522d");
- assertEquals(tinycolor("silver").toHex(), "c0c0c0");
- assertEquals(tinycolor("skyblue").toHex(), "87ceeb");
- assertEquals(tinycolor("slateblue").toHex(), "6a5acd");
- assertEquals(tinycolor("slategray").toHex(), "708090");
- assertEquals(tinycolor("snow").toHex(), "fffafa");
- assertEquals(tinycolor("springgreen").toHex(), "00ff7f");
- assertEquals(tinycolor("steelblue").toHex(), "4682b4");
- assertEquals(tinycolor("tan").toHex(), "d2b48c");
- assertEquals(tinycolor("teal").toHex(), "008080");
- assertEquals(tinycolor("thistle").toHex(), "d8bfd8");
- assertEquals(tinycolor("tomato").toHex(), "ff6347");
- assertEquals(tinycolor("turquoise").toHex(), "40e0d0");
- assertEquals(tinycolor("violet").toHex(), "ee82ee");
- assertEquals(tinycolor("wheat").toHex(), "f5deb3");
- assertEquals(tinycolor("white").toHex(), "ffffff");
- assertEquals(tinycolor("whitesmoke").toHex(), "f5f5f5");
- assertEquals(tinycolor("yellow").toHex(), "ffff00");
- assertEquals(tinycolor("yellowgreen").toHex(), "9acd32");
- assertEquals(tinycolor("#f00").toName(), "red");
- assertEquals(tinycolor("#fa0a0a").toName(), false);
- });
- Deno.test("Invalid alpha should normalize to 1", function () {
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: -1 }).toRgbString(),
- "rgb(255, 20, 10)",
- "Negative value"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: -0 }).toRgbString(),
- "rgba(255, 20, 10, 0)",
- "Negative 0"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: 0 }).toRgbString(),
- "rgba(255, 20, 10, 0)",
- "0"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: 0.5 }).toRgbString(),
- "rgba(255, 20, 10, 0.5)",
- ".5"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: 1 }).toRgbString(),
- "rgb(255, 20, 10)",
- "1"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: 100 }).toRgbString(),
- "rgb(255, 20, 10)",
- "Greater than 1"
- );
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: "asdfasd" }).toRgbString(),
- "rgb(255, 20, 10)",
- "Non Numeric"
- );
- assertEquals(
- tinycolor("#fff").toRgbString(),
- "rgb(255, 255, 255)",
- "Hex should be 1"
- );
- assertEquals(
- tinycolor("rgba 255 0 0 100").toRgbString(),
- "rgb(255, 0, 0)",
- "Greater than 1 in string parsing"
- );
- });
- Deno.test("toString() with alpha set", function () {
- var redNamed = tinycolor.fromRatio(
- { r: 255, g: 0, b: 0, a: 0.6 },
- {
- format: "name",
- }
- );
- var transparentNamed = tinycolor.fromRatio(
- { r: 255, g: 0, b: 0, a: 0 },
- {
- format: "name",
- }
- );
- var redHex = tinycolor.fromRatio(
- { r: 255, g: 0, b: 0, a: 0.4 },
- {
- format: "hex",
- }
- );
- assertEquals(redNamed.getFormat(), "name", "getFormat() is correct");
- assertEquals(redHex.getFormat(), "hex", "getFormat() is correct");
- assertEquals(
- redNamed.toString(),
- "rgba(255, 0, 0, 0.6)",
- "Names should default to rgba if alpha is < 1"
- );
- assertEquals(
- redHex.toString(),
- "rgba(255, 0, 0, 0.4)",
- "Hex should default to rgba if alpha is < 1"
- );
- assertEquals(
- redNamed.toString("hex"),
- "#ff0000",
- "Names should not be returned as rgba if format is specified"
- );
- assertEquals(
- redNamed.toString("hex6"),
- "#ff0000",
- "Names should not be returned as rgba if format is specified"
- );
- assertEquals(
- redNamed.toString("hex3"),
- "#f00",
- "Names should not be returned as rgba if format is specified"
- );
- assertEquals(
- redNamed.toString("hex8"),
- "#ff000099",
- "Names should not be returned as rgba if format is specified"
- );
- assertEquals(
- redNamed.toString("hex4"),
- "#f009",
- "Names should not be returned as rgba if format is specified"
- );
- assertEquals(
- redNamed.toString("name"),
- "#ff0000",
- "Semi transparent names should return hex in toString() if name format is specified"
- );
- assertEquals(
- redNamed.toName(),
- false,
- "Semi transparent names should be false in toName()"
- );
- assertEquals(
- redHex.toString(),
- "rgba(255, 0, 0, 0.4)",
- "Hex should default to rgba if alpha is < 1"
- );
- assertEquals(
- transparentNamed.toString(),
- "transparent",
- "Named color should equal transparent if alpha == 0"
- );
- redHex.setAlpha(0);
- assertEquals(
- redHex.toString(),
- "rgba(255, 0, 0, 0)",
- "Hex should default to rgba if alpha is = 0"
- );
- });
- Deno.test("setting alpha", function () {
- var hexSetter = tinycolor("rgba(255, 0, 0, 1)");
- assertEquals(hexSetter.getAlpha(), 1, "Alpha should start as 1");
- var returnedFromSetAlpha = hexSetter.setAlpha(0.9);
- assertEquals(
- returnedFromSetAlpha,
- hexSetter,
- "setAlpha return value should be the color."
- );
- assertEquals(hexSetter.getAlpha(), 0.9, "setAlpha should change alpha value");
- hexSetter.setAlpha(0.5);
- assertEquals(hexSetter.getAlpha(), 0.5, "setAlpha should change alpha value");
- hexSetter.setAlpha(0);
- assertEquals(hexSetter.getAlpha(), 0, "setAlpha should change alpha value");
- hexSetter.setAlpha(-1);
- assertEquals(
- hexSetter.getAlpha(),
- 1,
- "setAlpha with value < 0 should be bound to 1"
- );
- hexSetter.setAlpha(2);
- assertEquals(
- hexSetter.getAlpha(),
- 1,
- "setAlpha with value > 1 should be bound to 1"
- );
- hexSetter.setAlpha();
- assertEquals(
- hexSetter.getAlpha(),
- 1,
- "setAlpha with invalid value should be bound to 1"
- );
- hexSetter.setAlpha(null);
- assertEquals(
- hexSetter.getAlpha(),
- 1,
- "setAlpha with invalid value should be bound to 1"
- );
- hexSetter.setAlpha("test");
- assertEquals(
- hexSetter.getAlpha(),
- 1,
- "setAlpha with invalid value should be bound to 1"
- );
- });
- Deno.test("Alpha = 0 should act differently on toName()", function () {
- assertEquals(
- tinycolor({ r: 255, g: 20, b: 10, a: 0 }).toName(),
- "transparent",
- "0"
- );
- assertEquals(
- tinycolor("transparent").toString(),
- "transparent",
- "toString when passed"
- );
- assertEquals(tinycolor("transparent").toHex(), "000000", "toHex");
- });
- Deno.test("getBrightness", function () {
- assertEquals(tinycolor("#000").getBrightness(), 0, "returns 0 for #000");
- assertEquals(tinycolor("#fff").getBrightness(), 255, "returns 255 for #fff");
- });
- Deno.test("getLuminance", function () {
- assertEquals(tinycolor("#000").getLuminance(), 0, "returns 0 for #000");
- assertEquals(tinycolor("#fff").getLuminance(), 1, "returns 1 for #fff");
- });
- Deno.test("isDark returns true/false for dark/light colors", function () {
- assertEquals(tinycolor("#000").isDark(), true, "#000 is dark");
- assertEquals(tinycolor("#111").isDark(), true, "#111 is dark");
- assertEquals(tinycolor("#222").isDark(), true, "#222 is dark");
- assertEquals(tinycolor("#333").isDark(), true, "#333 is dark");
- assertEquals(tinycolor("#444").isDark(), true, "#444 is dark");
- assertEquals(tinycolor("#555").isDark(), true, "#555 is dark");
- assertEquals(tinycolor("#666").isDark(), true, "#666 is dark");
- assertEquals(tinycolor("#777").isDark(), true, "#777 is dark");
- assertEquals(tinycolor("#888").isDark(), false, "#888 is not dark");
- assertEquals(tinycolor("#999").isDark(), false, "#999 is not dark");
- assertEquals(tinycolor("#aaa").isDark(), false, "#aaa is not dark");
- assertEquals(tinycolor("#bbb").isDark(), false, "#bbb is not dark");
- assertEquals(tinycolor("#ccc").isDark(), false, "#ccc is not dark");
- assertEquals(tinycolor("#ddd").isDark(), false, "#ddd is not dark");
- assertEquals(tinycolor("#eee").isDark(), false, "#eee is not dark");
- assertEquals(tinycolor("#fff").isDark(), false, "#fff is not dark");
- });
- Deno.test("isLight returns true/false for light/dark colors", function () {
- assertEquals(tinycolor("#000").isLight(), false, "#000 is not light");
- assertEquals(tinycolor("#111").isLight(), false, "#111 is not light");
- assertEquals(tinycolor("#222").isLight(), false, "#222 is not light");
- assertEquals(tinycolor("#333").isLight(), false, "#333 is not light");
- assertEquals(tinycolor("#444").isLight(), false, "#444 is not light");
- assertEquals(tinycolor("#555").isLight(), false, "#555 is not light");
- assertEquals(tinycolor("#666").isLight(), false, "#666 is not light");
- assertEquals(tinycolor("#777").isLight(), false, "#777 is not light");
- assertEquals(tinycolor("#888").isLight(), true, "#888 is light");
- assertEquals(tinycolor("#999").isLight(), true, "#999 is light");
- assertEquals(tinycolor("#aaa").isLight(), true, "#aaa is light");
- assertEquals(tinycolor("#bbb").isLight(), true, "#bbb is light");
- assertEquals(tinycolor("#ccc").isLight(), true, "#ccc is light");
- assertEquals(tinycolor("#ddd").isLight(), true, "#ddd is light");
- assertEquals(tinycolor("#eee").isLight(), true, "#eee is light");
- assertEquals(tinycolor("#fff").isLight(), true, "#fff is light");
- });
- Deno.test("HSL Object", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assertEquals(
- tiny.toHexString(),
- tinycolor(tiny.toHsl()).toHexString(),
- "HSL Object"
- );
- }
- });
- Deno.test("HSL String", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- var input = tiny.toRgb();
- var output = tinycolor(tiny.toHslString()).toRgb();
- var maxDiff = 2;
- assertEquals(
- Math.abs(input.r - output.r) <= maxDiff,
- true,
- "toHslString red value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.g - output.g) <= maxDiff,
- true,
- "toHslString green value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.b - output.b) <= maxDiff,
- true,
- "toHslString blue value difference <= " + maxDiff
- );
- }
- });
- Deno.test("HSV String", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- var input = tiny.toRgb();
- var output = tinycolor(tiny.toHsvString()).toRgb();
- var maxDiff = 2;
- assertEquals(
- Math.abs(input.r - output.r) <= maxDiff,
- true,
- "toHsvString red value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.g - output.g) <= maxDiff,
- true,
- "toHsvString green value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.b - output.b) <= maxDiff,
- true,
- "toHsvString blue value difference <= " + maxDiff
- );
- }
- });
- Deno.test("HSV Object", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assertEquals(
- tiny.toHexString(),
- tinycolor(tiny.toHsv()).toHexString(),
- "HSV Object"
- );
- }
- });
- Deno.test("RGB Object", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assertEquals(
- tiny.toHexString(),
- tinycolor(tiny.toRgb()).toHexString(),
- "RGB Object"
- );
- }
- });
- Deno.test("RGB String", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assertEquals(
- tiny.toHexString(),
- tinycolor(tiny.toRgbString()).toHexString(),
- "RGB String"
- );
- }
- });
- Deno.test("PRGB Object", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- var input = tiny.toRgb();
- var output = tinycolor(tiny.toPercentageRgb()).toRgb();
- var maxDiff = 2;
- assertEquals(
- Math.abs(input.r - output.r) <= maxDiff,
- true,
- "Red value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.g - output.g) <= maxDiff,
- true,
- "Green value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.b - output.b) <= maxDiff,
- true,
- "Blue value difference <= " + maxDiff
- );
- }
- });
- Deno.test("PRGB String", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- var input = tiny.toRgb();
- var output = tinycolor(tiny.toPercentageRgbString()).toRgb();
- var maxDiff = 2;
- assertEquals(
- Math.abs(input.r - output.r) <= maxDiff,
- true,
- "Red value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.g - output.g) <= maxDiff,
- true,
- "Green value difference <= " + maxDiff
- );
- assertEquals(
- Math.abs(input.b - output.b) <= maxDiff,
- true,
- "Blue value difference <= " + maxDiff
- );
- }
- });
- Deno.test("Object", function () {
- for (var i = 0; i < conversions.length; i++) {
- var c = conversions[i];
- var tiny = tinycolor(c.hex);
- assertEquals(tiny.toHexString(), tinycolor(tiny).toHexString(), "Object");
- }
- });
- Deno.test("Color equality", function () {
- assert(tinycolor.equals("#ff0000", "#ff0000"), "Same hex");
- assert(tinycolor.equals("#ff0000", "rgb(255, 0, 0)"), "Same alphas");
- assert(
- !tinycolor.equals("#ff0000", "rgba(255, 0, 0, .1)"),
- "Different alphas"
- );
- assert(tinycolor.equals("#ff000066", "rgba(255, 0, 0, .4)"), "Same alphas");
- assert(tinycolor.equals("#f009", "rgba(255, 0, 0, .6)"), "Same alphas");
- assert(tinycolor.equals("#336699CC", "369C"), "Same hex");
- assert(tinycolor.equals("ff0000", "#ff0000"), "Same hex");
- assert(tinycolor.equals("#f00", "#ff0000"), "Same hex");
- assert(tinycolor.equals("#f00", "#ff0000"), "Same hex");
- assert(tinycolor.equals("f00", "#ff0000"), "Same hex");
- assertEquals(tinycolor("010101").toHexString(), "#010101");
- assert(!tinycolor.equals("#ff0000", "#00ff00"), "Different hex");
- assert(
- tinycolor.equals("#ff8000", "rgb(100%, 50%, 0%)"),
- "Percentage bounds checking"
- );
- });
- Deno.test("isReadable", function () {
- // "#ff0088", "#8822aa" (values used in old WCAG1 tests)
- assert(
- tinycolor.isReadable("#000000", "#ffffff", { level: "AA", size: "small" }),
- "white/black is readable"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#5c1a72", {}),
- "not readable - empty wcag2 object"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#8822aa", { level: "AA", size: "small" }),
- "not readable - AA small"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#8822aa", { level: "AA", size: "large" }),
- "not readable - AA large"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#8822aa", {
- level: "AAA",
- size: "small",
- }),
- "not readable - AAA small"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#8822aa", {
- level: "AAA",
- size: "large",
- }),
- "not readable - AAA large"
- );
- // values derived from and validated using the calculators at http://www.dasplankton.de/ContrastA/
- // and http://webaim.org/resources/contrastchecker/
- // "#ff0088", "#5c1a72": contrast ratio 3.04
- assert(
- !tinycolor.isReadable("#ff0088", "#5c1a72", { level: "AA", size: "small" }),
- "not readable - AA small"
- );
- assert(
- tinycolor.isReadable("#ff0088", "#5c1a72", { level: "AA", size: "large" }),
- "readable - AA large"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#5c1a72", {
- level: "AAA",
- size: "small",
- }),
- "not readable - AAA small"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#5c1a72", {
- level: "AAA",
- size: "large",
- }),
- "not readable - AAA large"
- );
- // "#ff0088", "#2e0c3a": contrast ratio 4.56
- assert(
- tinycolor.isReadable("#ff0088", "#2e0c3a", { level: "AA", size: "small" }),
- "readable - AA small"
- );
- assert(
- tinycolor.isReadable("#ff0088", "#2e0c3a", { level: "AA", size: "large" }),
- "readable - AA large"
- );
- assert(
- !tinycolor.isReadable("#ff0088", "#2e0c3a", {
- level: "AAA",
- size: "small",
- }),
- "not readable - AAA small"
- );
- assert(
- tinycolor.isReadable("#ff0088", "#2e0c3a", { level: "AAA", size: "large" }),
- "readable - AAA large"
- );
- // "#db91b8", "#2e0c3a": contrast ratio 7.12
- assert(
- tinycolor.isReadable("#db91b8", "#2e0c3a", { level: "AA", size: "small" }),
- "readable - AA small"
- );
- assert(
- tinycolor.isReadable("#db91b8", "#2e0c3a", { level: "AA", size: "large" }),
- "readable - AA large"
- );
- assert(
- tinycolor.isReadable("#db91b8", "#2e0c3a", { level: "AAA", size: "small" }),
- "readable - AAA small"
- );
- assert(
- tinycolor.isReadable("#db91b8", "#2e0c3a", { level: "AAA", size: "large" }),
- "readable - AAA large"
- );
- });
- Deno.test("readability", function () {
- // check return values from readability function. See isReadable above for standards tests.
- assertEquals(
- tinycolor.readability("#000", "#000"),
- 1,
- "Readability function test 0"
- );
- assertEquals(
- tinycolor.readability("#000", "#111"),
- 1.1121078324840545,
- "Readability function test 1"
- );
- assertEquals(
- tinycolor.readability("#000", "#fff"),
- 21,
- "Readability function test 2"
- );
- });
- Deno.test("mostReadable", function () {
- assertEquals(
- tinycolor
- .mostReadable("#000", ["#111", "#222", { wcag2: {} }])
- .toHexString(),
- "#222222",
- "readable color present"
- );
- assertEquals(
- tinycolor
- .mostReadable("#f00", ["#d00", "#0d0"], { wcag2: {} })
- .toHexString(),
- "#00dd00",
- "readable color present"
- );
- assertEquals(
- tinycolor
- .mostReadable("#fff", ["#fff", "#fff"], { wcag2: {} })
- .toHexString(),
- "#ffffff",
- "no different color in list"
- );
- //includeFallbackColors
- assertEquals(
- tinycolor
- .mostReadable("#fff", ["#fff", "#fff"], {
- includeFallbackColors: true,
- })
- .toHexString(),
- "#000000",
- "no different color in list"
- );
- assertEquals(
- tinycolor
- .mostReadable("#123", ["#124", "#125"], {
- includeFallbackColors: false,
- })
- .toHexString(),
- "#112255",
- "no readable color in list"
- );
- assertEquals(
- tinycolor
- .mostReadable("#123", ["#000", "#fff"], {
- includeFallbackColors: false,
- })
- .toHexString(),
- "#ffffff",
- "verify assumption"
- );
- assertEquals(
- tinycolor
- .mostReadable("#123", ["#124", "#125"], {
- includeFallbackColors: true,
- })
- .toHexString(),
- "#ffffff",
- "no readable color in list"
- );
- assertEquals(
- tinycolor
- .mostReadable("#ff0088", ["#000", "#fff"], {
- includeFallbackColors: false,
- })
- .toHexString(),
- "#000000",
- "verify assumption"
- );
- assertEquals(
- tinycolor
- .mostReadable("#ff0088", ["#2e0c3a"], {
- includeFallbackColors: true,
- level: "AAA",
- size: "large",
- })
- .toHexString(),
- "#2e0c3a",
- "readable color present"
- );
- assertEquals(
- tinycolor
- .mostReadable("#ff0088", ["#2e0c3a"], {
- includeFallbackColors: true,
- level: "AAA",
- size: "small",
- })
- .toHexString(),
- "#000000",
- "no readable color in list"
- );
- assertEquals(
- tinycolor
- .mostReadable("#371b2c", ["#000", "#fff"], {
- includeFallbackColors: false,
- })
- .toHexString(),
- "#ffffff",
- "verify assumption"
- );
- assertEquals(
- tinycolor
- .mostReadable("#371b2c", ["#a9acb6"], {
- includeFallbackColors: true,
- level: "AAA",
- size: "large",
- })
- .toHexString(),
- "#a9acb6",
- "readable color present"
- );
- assertEquals(
- tinycolor
- .mostReadable("#371b2c", ["#a9acb6"], {
- includeFallbackColors: true,
- level: "AAA",
- size: "small",
- })
- .toHexString(),
- "#ffffff",
- "no readable color in list"
- );
- });
- Deno.test("Filters", function () {
- assertEquals(
- tinycolor("red").toFilter(),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff0000,endColorstr=#ffff0000)"
- );
- assertEquals(
- tinycolor("red").toFilter("blue"),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffff0000,endColorstr=#ff0000ff)"
- );
- assertEquals(
- tinycolor("transparent").toFilter(),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr=#00000000)"
- );
- assertEquals(
- tinycolor("transparent").toFilter("red"),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr=#ffff0000)"
- );
- assertEquals(
- tinycolor("#f0f0f0dd").toFilter(),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ddf0f0f0,endColorstr=#ddf0f0f0)"
- );
- assertEquals(
- tinycolor("rgba(0, 0, 255, .5").toFilter(),
- "progid:DXImageTransform.Microsoft.gradient(startColorstr=#800000ff,endColorstr=#800000ff)"
- );
- });
- /* Originally generated with:
- var results = [];
- for (var i = 0; i <= 100; i++) results.push( tinycolor.saturate("red", i).toHex() )
- console.log(JSON.stringify(results))
- */
- var DESATURATIONS = [
- "ff0000",
- "fe0101",
- "fc0303",
- "fb0404",
- "fa0505",
- "f90606",
- "f70808",
- "f60909",
- "f50a0a",
- "f40b0b",
- "f20d0d",
- "f10e0e",
- "f00f0f",
- "ee1111",
- "ed1212",
- "ec1313",
- "eb1414",
- "e91616",
- "e81717",
- "e71818",
- "e61919",
- "e41b1b",
- "e31c1c",
- "e21d1d",
- "e01f1f",
- "df2020",
- "de2121",
- "dd2222",
- "db2424",
- "da2525",
- "d92626",
- "d72828",
- "d62929",
- "d52a2a",
- "d42b2b",
- "d22d2d",
- "d12e2e",
- "d02f2f",
- "cf3030",
- "cd3232",
- "cc3333",
- "cb3434",
- "c93636",
- "c83737",
- "c73838",
- "c63939",
- "c43b3b",
- "c33c3c",
- "c23d3d",
- "c13e3e",
- "bf4040",
- "be4141",
- "bd4242",
- "bb4444",
- "ba4545",
- "b94646",
- "b84747",
- "b64949",
- "b54a4a",
- "b44b4b",
- "b34d4d",
- "b14e4e",
- "b04f4f",
- "af5050",
- "ad5252",
- "ac5353",
- "ab5454",
- "aa5555",
- "a85757",
- "a75858",
- "a65959",
- "a45b5b",
- "a35c5c",
- "a25d5d",
- "a15e5e",
- "9f6060",
- "9e6161",
- "9d6262",
- "9c6363",
- "9a6565",
- "996666",
- "986767",
- "966969",
- "956a6a",
- "946b6b",
- "936c6c",
- "916e6e",
- "906f6f",
- "8f7070",
- "8e7171",
- "8c7373",
- "8b7474",
- "8a7575",
- "887777",
- "877878",
- "867979",
- "857a7a",
- "837c7c",
- "827d7d",
- "817e7e",
- "808080",
- ];
- var SATURATIONS = [
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- "ff0000",
- ];
- var LIGHTENS = [
- "ff0000",
- "ff0505",
- "ff0a0a",
- "ff0f0f",
- "ff1414",
- "ff1a1a",
- "ff1f1f",
- "ff2424",
- "ff2929",
- "ff2e2e",
- "ff3333",
- "ff3838",
- "ff3d3d",
- "ff4242",
- "ff4747",
- "ff4d4d",
- "ff5252",
- "ff5757",
- "ff5c5c",
- "ff6161",
- "ff6666",
- "ff6b6b",
- "ff7070",
- "ff7575",
- "ff7a7a",
- "ff8080",
- "ff8585",
- "ff8a8a",
- "ff8f8f",
- "ff9494",
- "ff9999",
- "ff9e9e",
- "ffa3a3",
- "ffa8a8",
- "ffadad",
- "ffb3b3",
- "ffb8b8",
- "ffbdbd",
- "ffc2c2",
- "ffc7c7",
- "ffcccc",
- "ffd1d1",
- "ffd6d6",
- "ffdbdb",
- "ffe0e0",
- "ffe5e5",
- "ffebeb",
- "fff0f0",
- "fff5f5",
- "fffafa",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- "ffffff",
- ];
- var BRIGHTENS = [
- "ff0000",
- "ff0303",
- "ff0505",
- "ff0808",
- "ff0a0a",
- "ff0d0d",
- "ff0f0f",
- "ff1212",
- "ff1414",
- "ff1717",
- "ff1919",
- "ff1c1c",
- "ff1f1f",
- "ff2121",
- "ff2424",
- "ff2626",
- "ff2929",
- "ff2b2b",
- "ff2e2e",
- "ff3030",
- "ff3333",
- "ff3636",
- "ff3838",
- "ff3b3b",
- "ff3d3d",
- "ff4040",
- "ff4242",
- "ff4545",
- "ff4747",
- "ff4a4a",
- "ff4c4c",
- "ff4f4f",
- "ff5252",
- "ff5454",
- "ff5757",
- "ff5959",
- "ff5c5c",
- "ff5e5e",
- "ff6161",
- "ff6363",
- "ff6666",
- "ff6969",
- "ff6b6b",
- "ff6e6e",
- "ff7070",
- "ff7373",
- "ff7575",
- "ff7878",
- "ff7a7a",
- "ff7d7d",
- "ff7f7f",
- "ff8282",
- "ff8585",
- "ff8787",
- "ff8a8a",
- "ff8c8c",
- "ff8f8f",
- "ff9191",
- "ff9494",
- "ff9696",
- "ff9999",
- "ff9c9c",
- "ff9e9e",
- "ffa1a1",
- "ffa3a3",
- "ffa6a6",
- "ffa8a8",
- "ffabab",
- "ffadad",
- "ffb0b0",
- "ffb2b2",
- "ffb5b5",
- "ffb8b8",
- "ffbaba",
- "ffbdbd",
- "ffbfbf",
- "ffc2c2",
- "ffc4c4",
- "ffc7c7",
- "ffc9c9",
- "ffcccc",
- "ffcfcf",
- "ffd1d1",
- "ffd4d4",
- "ffd6d6",
- "ffd9d9",
- "ffdbdb",
- "ffdede",
- "ffe0e0",
- "ffe3e3",
- "ffe5e5",
- "ffe8e8",
- "ffebeb",
- "ffeded",
- "fff0f0",
- "fff2f2",
- "fff5f5",
- "fff7f7",
- "fffafa",
- "fffcfc",
- "ffffff",
- ];
- var DARKENS = [
- "ff0000",
- "fa0000",
- "f50000",
- "f00000",
- "eb0000",
- "e60000",
- "e00000",
- "db0000",
- "d60000",
- "d10000",
- "cc0000",
- "c70000",
- "c20000",
- "bd0000",
- "b80000",
- "b30000",
- "ad0000",
- "a80000",
- "a30000",
- "9e0000",
- "990000",
- "940000",
- "8f0000",
- "8a0000",
- "850000",
- "800000",
- "7a0000",
- "750000",
- "700000",
- "6b0000",
- "660000",
- "610000",
- "5c0000",
- "570000",
- "520000",
- "4d0000",
- "470000",
- "420000",
- "3d0000",
- "380000",
- "330000",
- "2e0000",
- "290000",
- "240000",
- "1f0000",
- "190000",
- "140000",
- "0f0000",
- "0a0000",
- "050000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- "000000",
- ];
- Deno.test("Modifications", function () {
- for (var i = 0; i <= 100; i++) {
- assertEquals(
- tinycolor("red").desaturate(i).toHex(),
- DESATURATIONS[i],
- "Desaturation " + i + " works"
- );
- }
- for (var i = 0; i <= 100; i++) {
- assertEquals(
- tinycolor("red").saturate(i).toHex(),
- SATURATIONS[i],
- "Saturation " + i + " works"
- );
- }
- for (var i = 0; i <= 100; i++) {
- assertEquals(
- tinycolor("red").lighten(i).toHex(),
- LIGHTENS[i],
- "Lighten " + i + " works"
- );
- }
- for (var i = 0; i <= 100; i++) {
- assertEquals(
- tinycolor("red").brighten(i).toHex(),
- BRIGHTENS[i],
- "Brighter " + i + " works"
- );
- }
- for (var i = 0; i <= 100; i++) {
- assertEquals(
- tinycolor("red").darken(i).toHex(),
- DARKENS[i],
- "Darken " + i + " works"
- );
- }
- assertEquals(
- tinycolor("red").greyscale().toHex(),
- "808080",
- "Greyscale works"
- );
- });
- Deno.test("Spin", function () {
- assertEquals(
- Math.round(tinycolor("#f00").spin(-1234).toHsl().h),
- 206,
- "Spinning -1234 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(-360).toHsl().h),
- 0,
- "Spinning -360 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(-120).toHsl().h),
- 240,
- "Spinning -120 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(0).toHsl().h),
- 0,
- "Spinning 0 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(10).toHsl().h),
- 10,
- "Spinning 10 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(360).toHsl().h),
- 0,
- "Spinning 360 works"
- );
- assertEquals(
- Math.round(tinycolor("#f00").spin(2345).toHsl().h),
- 185,
- "Spinning 2345 works"
- );
- [-360, 0, 360].forEach(function (delta) {
- Object.keys(tinycolor.names).forEach(function (name) {
- assertEquals(
- tinycolor(name).toHex(),
- tinycolor(name).spin(delta).toHex(),
- "Spinning " + delta.toString() + " has no effect"
- );
- });
- });
- });
- Deno.test("Mix", function () {
- // amount 0 or none
- assertEquals(
- tinycolor.mix("#000", "#fff").toHsl().l,
- 0.5,
- "Mixing without amount works"
- );
- assertEquals(
- tinycolor.mix("#f00", "#000", 0).toHex(),
- "ff0000",
- "Mixing with 0 amount works"
- );
- // This case checks the the problem with floating point numbers (eg 255/90)
- assertEquals(
- tinycolor.mix("#fff", "#000", 90).toHex(),
- "1a1a1a",
- "Mixing with 90 amount works correctly"
- );
- // black and white
- for (var i = 0; i < 100; i++) {
- assertEquals(
- Math.round(tinycolor.mix("#000", "#fff", i).toHsl().l * 100) / 100,
- i / 100,
- "Mixing black and white with " + i + " amount works"
- );
- }
- // with colors
- for (var i = 0; i < 100; i++) {
- var new_hex = Math.round((255 * (100 - i)) / 100).toString(16);
- if (new_hex.length === 1) {
- new_hex = "0" + new_hex;
- }
- assertEquals(
- tinycolor.mix("#f00", "#000", i).toHex(),
- new_hex + "0000",
- "Mixing " + i + " (red channel)"
- );
- assertEquals(
- tinycolor.mix("#0f0", "#000", i).toHex(),
- "00" + new_hex + "00",
- "Mixing " + i + " (green channel)"
- );
- assertEquals(
- tinycolor.mix("#00f", "#000", i).toHex(),
- "0000" + new_hex,
- "Mixing " + i + " (blue channel)"
- );
- assertEquals(
- tinycolor.mix(tinycolor("transparent"), "#000", i).toRgb().a,
- i / 100,
- "Mixing " + i + " (alpha channel)"
- );
- }
- });
- // The combination tests need to be expanded furthe
- function colorsToHexString(colors) {
- return colors
- .map(function (c) {
- return c.toHex();
- })
- .join(",");
- }
- Deno.test("complement", function () {
- var complementDoesntModifyInstance = tinycolor("red");
- assertEquals(
- complementDoesntModifyInstance.complement().toHex(),
- "00ffff",
- "Complement works"
- );
- assertEquals(
- complementDoesntModifyInstance.toHex(),
- "ff0000",
- "Complement did not modify this color"
- );
- });
- Deno.test("analogous", function () {
- var combination = tinycolor("red").analogous();
- assertEquals(
- colorsToHexString(combination),
- "ff0000,ff0066,ff0033,ff0000,ff3300,ff6600",
- "Correct Combination"
- );
- });
- Deno.test("monochromatic", function () {
- var combination = tinycolor("red").monochromatic();
- assertEquals(
- colorsToHexString(combination),
- "ff0000,2a0000,550000,800000,aa0000,d40000",
- "Correct Combination"
- );
- });
- Deno.test("splitcomplement", function () {
- var combination = tinycolor("red").splitcomplement();
- assertEquals(
- colorsToHexString(combination),
- "ff0000,ccff00,0066ff",
- "Correct Combination"
- );
- });
- Deno.test("triad", function () {
- var combination = tinycolor("red").triad();
- assertEquals(
- colorsToHexString(combination),
- "ff0000,00ff00,0000ff",
- "Correct Combination"
- );
- });
- Deno.test("tetrad", function () {
- var combination = tinycolor("red").tetrad();
- assertEquals(
- colorsToHexString(combination),
- "ff0000,80ff00,00ffff,7f00ff",
- "Correct Combination"
- );
- });
- Deno.test({
- name: "polyad",
- // Disabled until https://github.com/bgrins/TinyColor/issues/254
- ignore: true,
- fn: function () {
- assertThrows(() => {
- tinycolor("red").polyad();
- });
- assertThrows(() => {
- tinycolor("red").polyad(-1);
- });
- assertThrows(() => {
- tinycolor("red").polyad("invalid");
- });
- assertEquals(colorsToHexString(tinycolor("red").polyad(1)), "ff0000");
- assertEquals(colorsToHexString(tinycolor("red").polyad("1")), "ff0000");
- assertEquals(
- colorsToHexString(tinycolor("red").polyad(2)),
- "ff0000,00ffff"
- );
- assertEquals(
- colorsToHexString(tinycolor("red").polyad(3)),
- "ff0000,00ff00,0000ff"
- );
- assertEquals(
- colorsToHexString(tinycolor("red").polyad(4)),
- "ff0000,80ff00,00ffff,7f00ff"
- );
- assertEquals(
- colorsToHexString(tinycolor("red").polyad(5)),
- "ff0000,ccff00,00ff66,0066ff,cc00ff"
- );
- },
- });
- runDenoTests();
- })();
|