HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/f/r/e/frenchy/www/french-american.org/current/node_modules/CSSselect/test/attributes.js
var CSSselect = require("../"),
    makeDom = require("htmlparser2").parseDOM,
    falseFunc = require("boolbase").falseFunc,
    assert = require("assert");

var dom = makeDom("<div><div data-foo=\"In the end, it doesn't really matter.\"></div><div data-foo=\"Indeed-that's a delicate matter.\">");

describe("Attributes", function(){
	describe("ignore case", function(){
		it("should for =", function(){
			var matches = CSSselect.selectAll("[data-foo=\"indeed-that's a delicate matter.\" i]", dom);
			assert.equal(matches.length, 1);
			assert.deepEqual(matches, [dom[0].children[1]]);
			matches = CSSselect.selectAll("[data-foo=\"inDeeD-THAT's a DELICATE matteR.\" i]", dom);
			assert.deepEqual(matches, [dom[0].children[1]]);
		});

		it("should for ^=", function(){
			var matches = CSSselect.selectAll("[data-foo^=IN i]", dom);
			assert.equal(matches.length, 2);
			assert.deepEqual(matches, dom[0].children);
			matches = CSSselect.selectAll("[data-foo^=in i]", dom);
			assert.deepEqual(matches, dom[0].children);
			matches = CSSselect.selectAll("[data-foo^=iN i]", dom);
			assert.deepEqual(matches, dom[0].children);
		});

		it("should for $=", function(){
			var matches = CSSselect.selectAll("[data-foo$=\"MATTER.\" i]", dom);
			assert.equal(matches.length, 2);
			assert.deepEqual(matches, dom[0].children);
			matches = CSSselect.selectAll("[data-foo$=\"matter.\" i]", dom);
			assert.deepEqual(matches, dom[0].children);
			matches = CSSselect.selectAll("[data-foo$=\"MaTtEr.\" i]", dom);
			assert.deepEqual(matches, dom[0].children);
		});

		it("should for !=", function(){
			var matches = CSSselect.selectAll("[data-foo!=\"indeed-that's a delicate matter.\" i]", dom);
			assert.equal(matches.length, 1);
			assert.deepEqual(matches, [dom[0].children[0]]);
			matches = CSSselect.selectAll("[data-foo!=\"inDeeD-THAT's a DELICATE matteR.\" i]", dom);
			assert.deepEqual(matches, [dom[0].children[0]]);
		});

		it("should for *=", function(){
			var matches = CSSselect.selectAll("[data-foo*=IT i]", dom);
			assert.equal(matches.length, 1);
			assert.deepEqual(matches, [dom[0].children[0]]);
			matches = CSSselect.selectAll("[data-foo*=tH i]", dom);
			assert.deepEqual(matches, dom[0].children);
		});

		it("should for |=", function(){
			var matches = CSSselect.selectAll("[data-foo|=indeed i]", dom);
			assert.equal(matches.length, 1);
			assert.deepEqual(matches, [dom[0].children[1]]);
			matches = CSSselect.selectAll("[data-foo|=inDeeD i]", dom);
			assert.deepEqual(matches, [dom[0].children[1]]);
		});

		it("should for ~=", function(){
			var matches = CSSselect.selectAll("[data-foo~=IT i]", dom);
			assert.equal(matches.length, 1);
			assert.deepEqual(matches, [dom[0].children[0]]);
			matches = CSSselect.selectAll("[data-foo~=dElIcAtE i]", dom);
			assert.deepEqual(matches, [dom[0].children[1]]);
		});
	});

	describe("no matches", function(){
		it("should for ~=", function(){
			assert.equal(CSSselect._compileUnsafe("[foo~='baz bar']"), falseFunc);
		});

		it("should for $=", function(){
			assert.equal(CSSselect._compileUnsafe("[foo$='']"), falseFunc);
		});

		it("should for *=", function(){
			assert.equal(CSSselect._compileUnsafe("[foo*='']"), falseFunc);
		});
	});
});