<commit_before>module("data");

test("expando", function(){
	expect(7);

	equals("expando" in jQuery, true, "jQuery is exposing the expando");

	var obj = {};
	jQuery.data(obj);
	equals( jQuery.expando in obj, true, "jQuery.data adds an expando to the object" );
	equals( typeof obj[jQuery.expando], "function", "jQuery.data adds an expando to the object as a function" );

	obj = {};
	jQuery.data(obj, 'test');
	equals( jQuery.expando in obj, false, "jQuery.data did not add an expando to the object" );

	obj = {};
	jQuery.data(obj, "foo", "bar");
	equals( jQuery.expando in obj, true, "jQuery.data added an expando to the object" );

	var id = obj[jQuery.expando]();
	equals( id in jQuery.cache, false, "jQuery.data did not add an entry to jQuery.cache" );

	equals( id.foo, "bar", "jQuery.data worked correctly" );
});

test("jQuery.acceptData", function() {
	expect(7);

	ok( jQuery.acceptData( document ), "document" );
	ok( jQuery.acceptData( document.documentElement ), "documentElement" );
	ok( jQuery.acceptData( {} ), "object" );
	ok( !jQuery.acceptData( document.createElement("embed") ), "embed" );
	ok( !jQuery.acceptData( document.createElement("applet") ), "applet" );

	var flash = document.createElement("object");
	flash.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
	ok( jQuery.acceptData( flash ), "flash" );

	var applet = document.createElement("object");
	applet.setAttribute("classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93");
	ok( !jQuery.acceptData( applet ), "applet" );
});

test("jQuery.data", function() {
	expect(13);
	var div = document.createElement("div");

	ok( jQuery.data(div, "test") === undefined, "Check for no data exists" );

	jQuery.data(div, "test", "success");
	equals( jQuery.data(div, "test"), "success", "Check for added data" );

	ok( jQuery.data(div, "notexist") === undefined, "Check for no data exists" );

	var data = jQuery.data(div);
	same( data, { "test": "success" }, "Return complete data set" );

	jQuery.data(div, "test", "overwritten");
	equals( jQuery.data(div, "test"), "overwritten", "Check for overwritten data" );

	jQuery.data(div, "test", undefined);
	equals( jQuery.data(div, "test"), "overwritten", "Check that data wasn't removed");

	jQuery.data(div, "test", null);
	ok( jQuery.data(div, "test") === null, "Check for null data");

	jQuery.data(div, "test3", "orig");
	jQuery.data(div, { "test": "in", "test2": "in2" });
	equals( jQuery.data(div, "test"), "in", "Verify setting an object in data." );
	equals( jQuery.data(div, "test2"), "in2", "Verify setting an object in data." );
	equals( jQuery.data(div, "test3"), "orig", "Verify original not overwritten." );

	var obj = {};
	jQuery.data( obj, "prop", true );

	ok( obj[ jQuery.expando ], "Data is being stored on the object." );
	ok( obj[ jQuery.expando ]().prop, "Data is being stored on the object." );

	equals( jQuery.data( obj, "prop" ), true, "Make sure the right value is retrieved." );
});

test(".data()", function() {
	expect(2);

	var div = jQuery("#foo");
	div.data("test", "success");
	same( div.data(), {test: "success"}, "data() get the entire data object" );

	var nodiv = jQuery("#unfound");
	equals( nodiv.data(), null, "data() on empty set returns null" );
})

test(".data(String) and .data(String, Object)", function() {
	expect(27);
	var parent = jQuery("<div><div></div></div>"),
		div = parent.children();

	parent<commit_msg>Make sure that undefined is always returned for missing data properties. Follow-up to #6304.<commit_after>module("data");

test("expando", function(){
	expect(7);

	equals("expando" in jQuery, true, "jQuery is exposing the expando");

	var obj = {};
	jQuery.data(obj);
	equals( jQuery.expando in obj, true, "jQuery.data adds an expando to the object" );
	equals( typeof obj[jQuery.expando], "function", "jQuery.data adds an expando to the object as a function" );

	obj = {};
	jQuery.data(obj, 'test');
	equals( jQuery.expando in obj, false, "jQuery.data did not add an expando to the object" );

	obj = {};
	jQuery.data(obj, "foo", "bar");
	equals( jQuery.expando in obj, true, "jQuery.data added an expando to the object" );

	var id = obj[jQuery.expando]();
	equals( id in jQuery.cache, false, "jQuery.data did not add an entry to jQuery.cache" );

	equals( id.foo, "bar", "jQuery.data worked correctly" );
});

test("jQuery.acceptData", function() {
	expect(7);

	ok( jQuery.acceptData( document ), "document" );
	ok( jQuery.acceptData( document.documentElement ), "documentElement" );
	ok( jQuery.acceptData( {} ), "object" );
	ok( !jQuery.acceptData( document.createElement("embed") ), "embed" );
	ok( !jQuery.acceptData( document.createElement("applet") ), "applet" );

	var flash = document.createElement("object");
	flash.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
	ok( jQuery.acceptData( flash ), "flash" );

	var applet = document.createElement("object");
	applet.setAttribute("classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93");
	ok( !jQuery.acceptData( applet ), "applet" );
});

test("jQuery.data", function() {
	expect(13);
	var div = document.createElement("div");

	ok( jQuery.data(div, "test") === undefined, "Check for no data exists" );

	jQuery.data(div, "test", "success");
	equals( jQuery.data(div, "test"), "success", "Check for added data" );

	ok( jQuery.data(div, "notexist") === undefined, "Check for no data exists" );

	var data = jQuery.data(div);
	same( data, { "test": "success" }, "Return complete data set" );

	jQuery.data(div, "test", "overwritten");
	equals( jQuery.data(div, "test"), "overwritten", "Check for overwritten data" );

	jQuery.data(div, "test", undefined);
	equals( jQuery.data(div, "test"), "overwritten", "Check that data wasn't removed");

	jQuery.data(div, "test", null);
	ok( jQuery.data(div, "test") === null, "Check for null data");

	jQuery.data(div, "test3", "orig");
	jQuery.data(div, { "test": "in", "test2": "in2" });
	equals( jQuery.data(div, "test"), "in", "Verify setting an object in data." );
	equals( jQuery.data(div, "test2"), "in2", "Verify setting an object in data." );
	equals( jQuery.data(div, "test3"), "orig", "Verify original not overwritten." );

	var obj = {};
	jQuery.data( obj, "prop", true );

	ok( obj[ jQuery.expando ], "Data is being stored on the object." );
	ok( obj[ jQuery.expando ]().prop, "Data is being stored on the object." );

	equals( jQuery.data( obj, "prop" ), true, "Make sure the right value is retrieved." );
});

test(".data()", function() {
	expect(4);

	var div = jQuery("#foo");
	strictEqual( div.data("foo"), undefined, "Make sure that missing result is undefined" );

	div.data("test", "success");
	same( div.data(), {test: "success"}, "data() get the entire data object" );
	strictEqual( div.data("foo"), undefined, "Make sure that missing result is still undefined" );

	var nodiv = jQuery("#unfound");
	equals( nodiv.data(), null, "data() on empty set returns null" );
})

test(".data(String) and .data(String, Object)", function() {
	expect(27);
	var parent = jQuery("<div><div></div></div>"),
		div = parent.children();

	parent
{'fraction_non_alphanumeric': 0.19113495200451722, 'fraction_numerical': 0.016657255787690572, 'mean_word_length': 4.9789029535864975, 'pattern_counts': {'":': 6, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3902268', 'n_tokens_mistral': 2421, 'n_tokens_neox': 2325, 'n_words': 701}