Best JavaScript code snippet using playwright-internal
viteraParser.js
Source:viteraParser.js
1"use strict";2var t = require("./templatePath");3var titleMap = {4 "Allergies": "Allergies, adverse reactions, alerts",5 "Medications": "History of medication use",6 "Procedures and Surgical/Medical History": "History of Procedures",7 "Insurance": "Payers",8 "Problems": "Problem List",9 "SOCIAL HISTORY": "Social History",10 "Lab Results": "Relevant diagnostic tests and/or laboratory data"11};12var normalizedCodeSystemNames = {13 "RxNorm": "RXNORM",14 "CPT-4": "CPT",15 "RoleClassRelationshipFormal": "HL7 RoleCode",16 "RoleCode": "HL7 Role",17 "ICD9CM": "ICD-9-CM",18 "AdministrativeGender": "HL7 AdministrativeGender",19 "MaritalStatus": "HL7 Marital Status",20 "CDC Race and Ethnicity": "Race and Ethnicity - CDC"21};22var normalizedDisplayNames = {23 "HISTORY OF MEDICATION USE": "History of medication use",24 "HISTORY OF IMMUNIZATIONS": "Immunizations",25 "HISTORY OF PROCEDURES": "History of Procedures",26 "history of prior surgery [For Hx of Tx, use H prefix]": "history of prior surgery [For Hx of Tx, use H prefix]",27 "History of encounters": "Encounters",28 "PAYMENT SOURCES": "Payment sources",29 "TREATMENT PLAN": "Plan of Care",30 "Problem list": "Problem List",31 "VITAL SIGNS": "Vital Signs",32 "RESULTS": "Relevant diagnostic tests and/or laboratory data"33};34module.exports = [{35 xpath: "//h:name[not(h:family)][not(text())]",36 action: "removeNode",37 comment: "bunch of empty names to be investigated"38}, {39 xpath: "//h:effectiveTime[not(*)][not(@*)]",40 action: "removeNode",41 comment: "all childless and attributeless times (maybe previously removed nullFlavor)"42}, {43 xpath: "//h:assignedPerson[not(*)]",44 action: "removeNode",45 comment: "all childless and attributeless assignedPerson (maybe previously removed nullFlavor)"46}, {47 xpath: t.allergiesSection + '/.//h:effectiveTime[not(@value | h:low | h:high)]',48 action: "removeNode",49}, {50 xpath: t.allergiesSection + '/h:id',51 action: "removeNode",52 comment: "error in file: id does not exist in spec"53}, {54 xpath: t.allergyObs + '/..',55 action: "addAttribute",56 params: {57 "inversionInd": "true"58 },59 comment: "parser expects a value",60}, {61 xpath: t.allergyObs + '/h:informant',62 action: "removeNode",63 comment: "error in file: informant does not exist in spec",64}, {65 xpath: t.allergyObs + '/h:participant/h:participantRole/h:playingEntity/h:name',66 action: "removeNode",67 comment: "needs to be researched"68}, {69 xpath: t.allergyReaction + '/h:code',70 action: "removeNode",71 comment: "can be anything according to spec and parser does not read it"72}, {73 xpath: t.allergyCommentAct,74 action: "removeNode",75 comment: "error in file: Ignoring Comment Activity"76}, {77 xpath: t.medSection + '/h:id',78 action: "removeNode",79 comment: "error in file: id does not exist in spec"80}, {81 xpath: t.medActivity + '/h:effectiveTime[@operator="A"]',82 action: "removeNode",83 comment: "error in file: unexpected interval"84}, {85 xpath: t.medActivity + '/h:informant',86 action: "removeNode",87 comment: "error in file: no informant node in spec"88}, {89 xpath: t.medActivity + '/h:entryRelationship/h:observation[not(h:templateId)]/..',90 action: "removeNode",91 comment: "error in file: template without templateId"92}, {93 xpath: t.medStatus,94 action: "removeNode",95 comment: "error in file: C32 template not valid in CCDA"96}, {97 xpath: t.medProbAct,98 action: "removeNode",99 comment: "error in file: there is no Problem Act in meidcations"100}, {101 xpath: t.medDispenseInfo,102 action: "removeNode",103 comment: "parser does not read"104}, {105 xpath: t.medSupplyInfo,106 action: "removeNode",107 comment: "parser does not read"108}, {109 xpath: t.medActivityInfo + '/h:manufacturedMaterial/h:name',110 action: "removeNode",111 comment: "parser does not read"112}, {113 xpath: t.medSupplyOrder + '/h:id',114 action: "removeNode",115 comment: "parser does not read"116}, {117 xpath: t.medSupplyOrder + '/h:effectiveTime',118 action: "removeNode",119 comment: "no value"120}, {121 xpath: t.medSupplyOrder + '/h:author/h:assignedAuthor/h:addr',122 action: "removeNode",123 comment: "parser does not read"124}, {125 xpath: t.medSupplyOrder + '/h:quantity[@unit]',126 action: "removeAttribute",127 params: "unit",128 comment: "parser does not read"129}, {130 xpath: t.immSection + '/h:id',131 action: "removeNode",132 comment: "error in file: id does not exist in spec"133}, {134 xpath: t.immActivity + '/h:code',135 action: "removeNode",136 comment: "parser does not read"137}, {138 xpath: t.immActivity + '/h:consumable/h:manufacturedProduct/h:manufacturedMaterial/h:name',139 action: "removeNode",140 comment: "to be researched"141}, {142 xpath: t.immActivity + '/h:consumable/h:manufacturedProduct/h:manufacturerOrganization/h:standardIndustryClassCode',143 action: "removeNode",144 comment: "to be researched"145}, {146 xpath: t.immActivity + '/h:informant',147 action: "removeNode",148 comment: "to be researched"149}, {150 xpath: t.immActUnknown1,151 action: "removeNode",152 comment: "unknown CCDA templateId"153}, {154 xpath: t.immActUnknown2,155 action: "removeNode",156 comment: "unknown CCDA templateId"157}, {158 xpath: t.immActComment + '/h:act',159 action: "addAttribute",160 params: {161 "moodCode": "INT"162 },163 comment: "just change ...22.4.64 is not good anyway"164}, {165 xpath: t.immActComment + '/h:act/h:templateId',166 action: "addAttribute",167 params: {168 "root": "2.16.840.1.113883.10.20.22.4.20"169 },170 comment: "2.16.840.1.113883.10.20.22.4.64 (comment) or 2.16.840.1.113883.10.20.22.4.20"171}, {172 xpath: t.procSection + '/h:id',173 action: "removeNode",174 comment: "error in file: id does not exist in spec"175}, {176 xpath: t.procActProc + '/h:informant',177 action: "removeNode",178 comment: "to be researched"179}, {180 xpath: t.procActProc + '/h:participant/h:templateId',181 action: "removeNode",182 comment: "error in file: this should be in participantRole"183}, {184 xpath: t.procActProc + '/h:participant/h:participantRole/h:id',185 action: "removeNode",186 comment: "to be researched"187}, {188 xpath: t.procActProcUnknown,189 action: "removeNode",190 comment: "to be researched"191}, {192 xpath: t.encSection + '/h:id',193 action: "removeNode",194 comment: "error in file: id does not exist in spec"195}, {196 xpath: t.encAct + '/h:informant',197 action: "removeNode",198 comment: "to be researched"199}, {200 xpath: t.encAct + '/h:participant/h:templateId',201 action: "removeNode",202 comment: "error in file: this should be in participantRole"203}, {204 xpath: t.encAct + '/h:participant/h:participantRole/h:id',205 action: "removeNode",206 comment: "to be researched"207}, {208 xpath: t.payersSection + '/h:id',209 action: "removeNode",210 comment: "error in file: id does not exist in spec"211}, {212 xpath: t.payersSection + '/h:code',213 action: "addAttribute",214 params: {215 "displayName": "Payers"216 }217}, {218 xpath: t.coverageAct + '/h:informant',219 action: "removeNode",220 comment: "to be researched"221}, {222 xpath: t.coverageAct + '/h:entryRelationship/h:sequenceNumber',223 action: "removeNode",224 comment: "to be researched"225}, {226 xpath: t.policyAct + '/h:entryRelationship/h:act[@moodCode="DEF"]',227 action: "addAttribute",228 params: {229 "moodCode": "EVN"230 },231 comment: "to be researched"232}, {233 xpath: t.policyAct + '/h:participant/h:participantRole/h:playingEntity/*[@value="19381212"]',234 action: "removeNode",235 comment: "to be researched"236}, {237 xpath: t.policyAct + '/h:performer/h:assignedEntity/h:representedOrganization[not(*)]',238 action: "removeNode",239 comment: "to be researched"240}, {241 xpath: t.pocSection + '/h:id',242 action: "removeNode",243 comment: "error in file: id does not exist in spec"244}, {245 xpath: t.pocActProc,246 action: "addAttribute",247 params: {248 "moodCode": "RQO"249 },250 comment: "parser does not support"251}, {252 xpath: t.pocActProcUnknown,253 action: "removeNode",254 comment: "not clear in specification, parser does not read"255}, {256 xpath: t.pocActProc + '/h:performer',257 action: "removeNode",258 comment: "not clear in specification, parser does not read"259}, {260 xpath: t.probSection + '/h:id',261 action: "removeNode",262 comment: "error in file: id does not exist in spec"263}, {264 xpath: t.probAct + '/h:statusCode',265 action: "addAttribute",266 params: {267 "code": "completed"268 },269 comment: "parser deficiency: not read"270}, {271 xpath: t.probAct + '/h:performer',272 action: "removeNode",273 comment: "invalid"274}, {275 xpath: t.probObservation + '/h:informant',276 action: "removeNode",277 comment: "invalid"278}, {279 xpath: t.probObservation + '/h:code',280 action: "removeNode",281}, {282 xpath: t.probObservation + '/..',283 action: "removeAttribute",284 params: "inversionInd",285}, {286 xpath: t.probStatus + '/..',287 action: "removeAttribute",288 params: "inversionInd",289}, {290 xpath: t.probStatus + '/h:value',291 action: "addAttribute",292 params: {293 "xsi:type": "CD"294 }295}, {296 xpath: t.probActComment,297 action: "removeNode",298 comment: "Comment Activity is not implemented by Parser"299}, {300 xpath: t.resultsSection + '/h:id',301 action: "removeNode",302 comment: "error in file: id does not exist in spec"303}, {304 xpath: t.resultsSection + '/h:entry',305 action: "addAttribute",306 params: {307 "typeCode": "DRIV"308 }309}, {310 xpath: t.resultOrg + '/h:participant',311 action: "removeNode"312}, {313 xpath: t.resultOrg + '/h:component/h:procedure',314 action: "removeNode"315}, {316 xpath: t.resultOrg + '/h:specimen',317 action: "removeNode"318}, {319 xpath: t.resultOrg + '/h:effectiveTime',320 action: "removeNode"321}, {322 xpath: t.resultObs + '/h:performer',323 action: "removeNode"324}, {325 xpath: t.resultObs + '/h:value[@value]',326 action: "removeZeros"327}, {328 xpath: t.resultsCommentAct,329 action: "removeNode",330 comment: "error in file: Ignoring Comment Activity"331}, {332 xpath: t.vitalsSection + '/h:id',333 action: "removeNode",334 comment: "error in file: id does not exist in spec"335}, {336 xpath: t.vitalsObs + '/h:informant',337 action: "removeNode"338}, {339 xpath: t.vitalsObs + '/h:methodCode',340 action: "removeNode"341}, {342 xpath: t.resultsSection + "/.//*[not(*)][not(@*)][not(text())]",343 action: "removeNode"344}, {345 xpath: "//h:title",346 action: "replaceText",347 params: titleMap,348 comment: "titles may differ"349}, {350 xpath: "//h:recordTarget/h:patientRole/h:patient/h:name",351 action: "addAttribute",352 params: {353 "use": "L"354 },355 comment: "parser does read @use and generator assumes it is always 'L'"356}, {357 xpath: "//*[@codeSystem][@codeSystemName]",358 action: "normalize",359 params: {360 attr: "codeSystemName",361 map: normalizedCodeSystemNames362 },363 comment: 'blue-button parser normalization'364}, {365 xpath: "//*[@codeSystem][@displayName][@code]",366 action: "normalize",367 params: {368 attr: "displayName",369 srcAttr: "code",370 map: normalizedDisplayNames371 },372 comment: 'blue-button parser normalization'...
linkedmap_test.js
Source:linkedmap_test.js
1// Copyright 2006 The Closure Library Authors. All Rights Reserved.2//3// Licensed under the Apache License, Version 2.0 (the "License");4// you may not use this file except in compliance with the License.5// You may obtain a copy of the License at6//7// http://www.apache.org/licenses/LICENSE-2.08//9// Unless required by applicable law or agreed to in writing, software10// distributed under the License is distributed on an "AS-IS" BASIS,11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12// See the License for the specific language governing permissions and13// limitations under the License.14goog.provide('goog.structs.LinkedMapTest');15goog.setTestOnly('goog.structs.LinkedMapTest');16goog.require('goog.structs.LinkedMap');17goog.require('goog.testing.jsunit');18goog.require('goog.testing.recordFunction');19function fillLinkedMap(m) {20 m.set('a', 0);21 m.set('b', 1);22 m.set('c', 2);23 m.set('d', 3);24}25var someObj = {};26function testLinkedMap() {27 var m = new goog.structs.LinkedMap();28 fillLinkedMap(m);29 assertArrayEquals(['a', 'b', 'c', 'd'], m.getKeys());30 assertArrayEquals([0, 1, 2, 3], m.getValues());31}32function testMaxSizeLinkedMap() {33 var m = new goog.structs.LinkedMap(3);34 fillLinkedMap(m);35 assertArrayEquals(['b', 'c', 'd'], m.getKeys());36 assertArrayEquals([1, 2, 3], m.getValues());37}38function testLruLinkedMap() {39 var m = new goog.structs.LinkedMap(undefined, true);40 fillLinkedMap(m);41 assertArrayEquals(['d', 'c', 'b', 'a'], m.getKeys());42 assertArrayEquals([3, 2, 1, 0], m.getValues());43 m.get('a');44 assertArrayEquals(['a', 'd', 'c', 'b'], m.getKeys());45 assertArrayEquals([0, 3, 2, 1], m.getValues());46 m.set('b', 4);47 assertArrayEquals(['b', 'a', 'd', 'c'], m.getKeys());48 assertArrayEquals([4, 0, 3, 2], m.getValues());49}50function testMaxSizeLruLinkedMap() {51 var m = new goog.structs.LinkedMap(3, true);52 fillLinkedMap(m);53 assertArrayEquals(['d', 'c', 'b'], m.getKeys());54 assertArrayEquals([3, 2, 1], m.getValues());55 m.get('c');56 assertArrayEquals(['c', 'd', 'b'], m.getKeys());57 assertArrayEquals([2, 3, 1], m.getValues());58 m.set('d', 4);59 assertArrayEquals(['d', 'c', 'b'], m.getKeys());60 assertArrayEquals([4, 2, 1], m.getValues());61}62function testGetCount() {63 var m = new goog.structs.LinkedMap();64 assertEquals(0, m.getCount());65 m.set('a', 0);66 assertEquals(1, m.getCount());67 m.set('a', 1);68 assertEquals(1, m.getCount());69 m.set('b', 2);70 assertEquals(2, m.getCount());71 m.remove('a');72 assertEquals(1, m.getCount());73}74function testIsEmpty() {75 var m = new goog.structs.LinkedMap();76 assertTrue(m.isEmpty());77 m.set('a', 0);78 assertFalse(m.isEmpty());79 m.remove('a');80 assertTrue(m.isEmpty());81}82function testSetMaxCount() {83 var m = new goog.structs.LinkedMap(3);84 fillLinkedMap(m);85 assertEquals(3, m.getCount());86 m.setMaxCount(5);87 m.set('e', 5);88 m.set('f', 6);89 m.set('g', 7);90 assertEquals(5, m.getCount());91 m.setMaxCount(4);92 assertEquals(4, m.getCount());93 m.setMaxCount(0);94 m.set('h', 8);95 m.set('i', 9);96 m.set('j', 10);97 assertEquals(7, m.getCount());98}99function testClear() {100 var m = new goog.structs.LinkedMap();101 fillLinkedMap(m);102 m.clear();103 assertTrue(m.isEmpty());104}105function testForEach() {106 var m = new goog.structs.LinkedMap();107 fillLinkedMap(m);108 m.forEach(function(val, key, linkedMap) {109 linkedMap.set(key, val * 2);110 assertEquals('forEach should run in provided context.', someObj, this);111 }, someObj);112 assertArrayEquals(['a', 'b', 'c', 'd'], m.getKeys());113 assertArrayEquals([0, 2, 4, 6], m.getValues());114}115function testMap() {116 var m = new goog.structs.LinkedMap();117 fillLinkedMap(m);118 var result = m.map(function(val, key, linkedMap) {119 assertEquals('The LinkedMap object should get passed in', m, linkedMap);120 assertEquals('map should run in provided context', someObj, this);121 return key + val;122 }, someObj);123 assertArrayEquals(['a0', 'b1', 'c2', 'd3'], result);124}125function testSome() {126 var m = new goog.structs.LinkedMap();127 fillLinkedMap(m);128 var result = m.some(function(val, key, linkedMap) {129 assertEquals('The LinkedMap object should get passed in', m, linkedMap);130 assertEquals('map should run in provided context', someObj, this);131 return val > 2;132 }, someObj);133 assertTrue(result);134 assertFalse(m.some(function(val) {return val > 3}));135 assertTrue(m.some(function(val, key) {return key == 'c';}));136 assertFalse(m.some(function(val, key) {return key == 'e';}));137}138function testEvery() {139 var m = new goog.structs.LinkedMap();140 fillLinkedMap(m);141 var result = m.every(function(val, key, linkedMap) {142 assertEquals('The LinkedMap object should get passed in', m, linkedMap);143 assertEquals('map should run in provided context', someObj, this);144 return val < 5;145 }, someObj);146 assertTrue(result);147 assertFalse(m.every(function(val) {return val < 2}));148 assertTrue(m.every(function(val, key) {return key.length == 1;}));149 assertFalse(m.every(function(val, key) {return key == 'b';}));150}151function testPeek() {152 var m = new goog.structs.LinkedMap();153 assertEquals(undefined, m.peek());154 assertEquals(undefined, m.peekLast());155 fillLinkedMap(m);156 assertEquals(0, m.peek());157 m.remove('a');158 assertEquals(1, m.peek());159 assertEquals(3, m.peekLast());160 assertEquals(3, m.peekValue('d'));161 assertEquals(1, m.peek());162 m.remove('d');163 assertEquals(2, m.peekLast());164}165function testPop() {166 var m = new goog.structs.LinkedMap();167 assertEquals(undefined, m.shift());168 assertEquals(undefined, m.pop());169 fillLinkedMap(m);170 assertEquals(4, m.getCount());171 assertEquals(0, m.shift());172 assertEquals(1, m.peek());173 assertEquals(3, m.pop());174 assertEquals(2, m.peekLast());175 assertEquals(2, m.getCount());176}177function testContains() {178 var m = new goog.structs.LinkedMap();179 fillLinkedMap(m);180 assertTrue(m.contains(2));181 assertFalse(m.contains(4));182}183function testContainsKey() {184 var m = new goog.structs.LinkedMap();185 fillLinkedMap(m);186 assertTrue(m.containsKey('b'));187 assertFalse(m.containsKey('elephant'));188 assertFalse(m.containsKey('undefined'));189}190function testRemoveNodeCalls() {191 var m = new goog.structs.LinkedMap(1);192 m.removeNode = goog.testing.recordFunction(m.removeNode);193 m.set('1', 1);194 assertEquals('removeNode not called after adding an element', 0,195 m.removeNode.getCallCount());196 m.set('1', 2);197 assertEquals('removeNode not called after updating an element', 0,198 m.removeNode.getCallCount());199 m.set('2', 2);200 assertEquals('removeNode called after adding an overflowing element', 1,201 m.removeNode.getCallCount());202 m.remove('3');203 assertEquals('removeNode not called after removing a non-existing element', 1,204 m.removeNode.getCallCount());205 m.remove('2');206 assertEquals('removeNode called after removing an existing element', 2,207 m.removeNode.getCallCount());208 m.set('1', 1);209 m.clear();210 assertEquals('removeNode called after clearing the map', 3,211 m.removeNode.getCallCount());212 m.clear();213 assertEquals('removeNode not called after clearing an empty map', 3,214 m.removeNode.getCallCount());215 m.set('1', 1);216 m.pop();217 assertEquals('removeNode called after calling pop', 4,218 m.removeNode.getCallCount());219 m.pop();220 assertEquals('removeNode not called after calling pop on an empty map', 4,221 m.removeNode.getCallCount());222 m.set('1', 1);223 m.shift();224 assertEquals('removeNode called after calling shift', 5,225 m.removeNode.getCallCount());226 m.shift();227 assertEquals('removeNode not called after calling shift on an empty map', 5,228 m.removeNode.getCallCount());229 m.setMaxCount(2);230 m.set('1', 1);231 m.set('2', 2);232 assertEquals('removeNode not called after increasing the maximum map size', 5,233 m.removeNode.getCallCount());234 m.setMaxCount(1);235 assertEquals('removeNode called after decreasing the maximum map size', 6,236 m.removeNode.getCallCount());...
BinarySearchTree.js
Source:BinarySearchTree.js
1const BinaryTree = require('./BinaryTree');2class Node {3 constructor(value) {4 this.value = value;5 this.left = null;6 this.right = null;7 }8}9class BinarySearchTree extends BinaryTree {10 constructor() {11 super();12 this.size = 0;13 }14 // táºn dụng thứ tá»± có sẵn của BinarySearchTree Äá» tiếp cáºn node cần tìm nhanh chóng15 search(value) {16 if (!this.root) return;17 let curNode = this.root;18 while (curNode) {19 if (value < curNode.value) {20 curNode = curNode.left;21 } else if (value > curNode.value) {22 curNode = curNode.right;23 } else {24 return curNode;25 }26 }27 return null;28 } // O(logn)29 add(value) {30 const newNode = new Node(value);31 if (!this.root) {32 this.root = newNode;33 return;34 }35 let curNode = this.root;36 while (true) {37 if (value < curNode.value) {38 if (!curNode.left) {39 curNode.left = newNode;40 newNode.parent = curNode;41 this.size++;42 return;43 }44 curNode = curNode.left;45 } else if (value > curNode.value) {46 if (!curNode.right) {47 curNode.right = newNode;48 newNode.parent = curNode;49 this.size++;50 return;51 }52 curNode = curNode.right;53 } else {54 // no duplicate55 return;56 }57 }58 } // O(logn)59 /**60 * Xoá 1 node ra khá»i BinarySearchTree thá»±c chất là thay thế node bá» xoá bằng 1 node descendant của nó61 * LÆ°u ý: removeNode.left < [removeNode] < removeNode.right.left < removeNode.right62 * Gá»i node sẽ bá» xoá là removeNode. Ta chia ra 3 trÆ°á»ng hợp:63 * TH1: removeNode không có con bên phải64 *65 * Ex: removeNode = 5 không có con bên phải66 *67 * 1068 * /69 * [5]70 * /71 * 172 * / \73 * ... ...74 *75 * -> removeNode = 5 sẽ Äược thay thế bằng removeNode.left = 176 *77 * TH2: removeNode có con bên phải và con bên phải không có con bên trái78 *79 * Ex: removeNode = 5 có con bên phải là node9 và node nà y không có con bên trái80 *81 * 1082 * /83 * [5]84 * / \85 * 1 986 * / \ \87 * ... ... ...88 *89 * -> removeNode = 5 sẽ Äược thay thế bằng removeNode.right = 990 *91 * TH3: removeNode có con bên phải và con bên phải có con bên trái92 *93 * Ex: removeNode = 5 có con bên phải là node9 và node nà y có con bên trái là node894 *95 * 1096 * /97 * [5]98 * / \99 * 1 9100 * / \ / \101 * ... ... 8 ...102 * /103 * 6104 *105 * -> removeNode = 5 sẽ Äược thay thế bằng removeNode.right.mostLeft = 6106 * (mostLeft là node nằm bên trái nhất của cây con có root là node9)107 *108 * >> Sau khi xác Äá»nh Äược replaceNode, xoá các liên kết tá»i removeNode và thà nh láºp các liên kết cho replaceNode109 */110 remove(value) {111 let removeNode = this.search(value);112 if (!removeNode) return;113 this.size--;114 // parent of removeNode115 const parentNode = removeNode.parent;116 // check to see position of removeNode is right of parentNode or left of parentNode117 const rmNodePos = removeNode.value > parentNode.value ? 'right' : 'left';118 // find replaceNode119 let replaceNode;120 // TH1: removeNode không có con bên phải121 if (!removeNode.right) replaceNode = removeNode.left;122 // TH2: removeNode có con bên phải và con bên phải không có con bên trái123 else if (removeNode.right && !removeNode.right.left) {124 replaceNode = removeNode.right;125 const removeNode_left = removeNode.left;126 if (removeNode_left) {127 replaceNode.left = removeNode_left;128 removeNode_left.parent = replaceNode;129 }130 }131 // TH3: removeNode có con bên phải và con bên phải có con bên trái132 else if (removeNode.right && removeNode.right.left) {133 replaceNode = this._leftMost(removeNode);134 const removeNode_left = removeNode.left;135 if (removeNode_left) {136 replaceNode.left = removeNode_left;137 removeNode_left.parent = replaceNode;138 }139 const removeNode_right = removeNode.right;140 if (removeNode_right) {141 replaceNode.right = removeNode_right;142 removeNode_right.parent = replaceNode;143 }144 replaceNode.parent.left = null;145 }146 if (!parentNode) {147 this.root = replaceNode;148 } else {149 parentNode[rmNodePos] = replaceNode;150 replaceNode.parent = removeNode.parent;151 }152 removeNode = null;153 return replaceNode;154 } // O(logn)155 // node nằm bên trái nhất của cây156 _leftMost(root) {157 let curNode = root;158 while (curNode.left) {159 curNode = curNode.left;160 }161 return curNode;162 }163}164const bst = new BinarySearchTree();165bst.add(10);166bst.add(5);167bst.add(1);168bst.add(8);169bst.add(9);170bst.add(7);171bst.add(6);172bst.remove(5);173// console.log(bst.root.left);174// console.log(JSON.stringify(bst))175// bst.breadthFirstTraversal();176// bst.preorderTraversal(bst.root);177// bst.inorderTraversal(bst.root);178// bst.postorderTraversal(bst.root);179// console.log(bst.search(100))...
BST.js
Source:BST.js
1class BSTNode {2 constructor(value = null, parent = null) {3 this.value = value;4 this.parent = parent;5 this.left = null;6 this.right = null;7 }8}9class BST {10 constructor() {11 this.root = undefined;12 }13 insert(value) {14 if (this.root === undefined) {15 this.root = new BSTNode(value);16 } else {17 let currentNode = this.root;18 while (currentNode) {19 if(value < currentNode.value){20 if (currentNode.left === null) {21 currentNode.left = new BSTNode(value, currentNode);22 } else {23 currentNode = currentNode.left;24 }25 }26 if(value > currentNode.value){27 if (currentNode.right === null) {28 currentNode.right = new BSTNode(value, currentNode);29 } else {30 currentNode = currentNode.right;31 }32 }33 if(value === currentNode.value) {34 return "Value already exists in tree!";35 }36 }37 }38 }39 search(value) {40 if(value === this.root.value) {41 return this.root;42 } else {43 let currentNode = this.root;44 while(currentNode) {45 if(value < currentNode.value) {46 currentNode = currentNode.left;47 } else if (value > currentNode.value) {48 currentNode = currentNode.right;49 } 50 51 if (value == currentNode.value) {52 return currentNode;53 }54 }55 return "This value isn't in the tree!";56 }57 }58 minValue(node = this.root) {59 while(node.left) {60 node = node.left;61 }62 return node;63 }64 remove(value) {65 let removeNode = search(value);66 67 if(typeof removeNode === "string") {68 return removeNode;69 } else {70 if(removeNode.left === null && removeNode.right === null){71 removeNode = null;72 } else if (removeNode.right && removeNode.left === null) {73 removeNode = removeNode.right;74 } else if (removeNode.left && removeNode.right === null) {75 removeNode = removeNode.left;76 } else if (removeNode.left && removeNode.right) {77 removeNode = this.minValue(removeNode.right)78 }79 return `${value} was removed successfully!`80 }81 }...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const element = await page.$('input[name="q"]');7 await element.evaluate(element => element.remove());8 await page.screenshot({ path: 'google.png' });9 await browser.close();10})();11const { chromium } = require('playwright');12const browser = await chromium.launch();13const context = await browser.newContext();14const page = await context.newPage();15const element = await page.$('input[name="q"]');16await element.evaluate(element => element.remove());17await page.screenshot({ path: 'google.png' });18await browser.close();
Using AI Code Generation
1const { removeNode } = require('playwright/lib/server/dom.js');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.setContent('<div id="foo">foo</div><div id="bar">bar</div><div id="baz">baz</div>');8 const foo = await page.$('#foo');9 const bar = await page.$('#bar');10 const baz = await page.$('#baz');11 await removeNode(foo);12 await removeNode(bar);13 await removeNode(baz);14 await page.screenshot({ path: 'screenshot.png' });15 await browser.close();16})();17const { removeNode } = require('playwright/lib/server/dom.js');18const { chromium } = require('playwright');19(async () => {20 const browser = await chromium.launch();21 const context = await browser.newContext();22 const page = await context.newPage();23 const element = await page.$('h1');24 await removeNode(element);25 await browser.close();26})();27const { removeNode } = require('playwright/lib/server/dom.js');28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();
Using AI Code Generation
1const { removeNode } = require('playwright/lib/utils/dom.js');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await page.$('input[name="q"]');8 await removeNode(element);9 await page.screenshot({ path: 'google.png' });10 await browser.close();11})();12const { removeNode } = require('playwright/lib/utils/dom.js');13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 const element = await page.$('input[name="q"]');19 await removeNode(element);20 await page.screenshot({ path: 'google.png' });21 await browser.close();22})();23const { removeNode } = require('playwright/lib/utils/dom.js');24const { chromium } = require('playwright');25(async () => {26 const browser = await chromium.launch();27 const context = await browser.newContext();28 const page = await context.newPage();29 const element = await page.$('input[name="q"]');30 await removeNode(element);31 await page.screenshot({ path: 'google.png' });32 await browser.close();33})();34const { removeNode } = require('playwright/lib/utils/dom.js');35const { chromium } = require('playwright');36(async () => {37 const browser = await chromium.launch();38 const context = await browser.newContext();39 const page = await context.newPage();40 const element = await page.$('input[name="q"]');41 await removeNode(element);42 await page.screenshot({ path: 'google.png' });43 await browser.close();44})();
Using AI Code Generation
1const { removeNode } = require('playwright/lib/server/dom.js');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch({ headless: false });5 const context = await browser.newContext();6 const page = await context.newPage();7 const elementHandle = await page.$('input');8 await removeNode(elementHandle);9 await browser.close();10})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const element = await page.$('input[name="q"]');7 await element.evaluate(element => element.remove(), element);8 await page.screenshot({ path: 'google.png' });9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 const element = await page.$('input[name="q"]');17 await element.evaluate(element => element.remove(), element);18 await page.screenshot({ path: 'google.png' });19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch();24 const context = await browser.newContext();25 const page = await context.newPage();26 const element = await page.$('input[name="q"]');27 await element.evaluate(element => element.remove(), element);28 await page.screenshot({ path: 'google.png' });29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 const element = await page.$('input[name="q"]');37 await element.evaluate(element => element.remove(), element);38 await page.screenshot({ path: 'google.png' });39 await browser.close();40})();
Using AI Code Generation
1const { removeNode } = require('playwright/lib/server/dom.js');2removeNode(document.body);3const { removeNode } = require('playwright/lib/server/dom.js');4const { removeNode } = require('playwright/lib/server/dom.js');5removeNode(document.body);6removeNode(document.body);7const { removeNode } = require('playwright/lib/server/dom.js');8removeNode(document.body);9const { removeNode } = require('playwright/lib/server/dom.js');10removeNode(document.body);11const { removeNode } = require('playwright/lib/server/dom.js');12removeNode(document.body);13const { removeNode } = require('playwright/lib/server/dom.js');14removeNode(document.body);15const { removeNode } = require('playwright/lib/server/dom.js');16removeNode(document.body);17const { removeNode } = require('playwright/lib/server/dom.js');18removeNode(document.body);19const { removeNode } = require('playwright/lib/server/dom.js');20removeNode(document.body);21const { removeNode } = require('playwright/lib/server/dom.js');22removeNode(document.body);23const { removeNode } = require('playwright/lib/server/dom.js');24removeNode(document.body);25const { removeNode } = require('playwright/lib/server/dom.js');26removeNode(document.body);27const { removeNode } = require('play
Using AI Code Generation
1const { removeNode } = require('playwright/lib/server/dom.js');2removeNode(document.querySelector('button'));3const { removeNode } = require('playwright/lib/server/dom.js');4removeNode(document.querySelector('button'));5const { removeNode } = require('playwright/lib/server/dom.js');6removeNode(document.querySelector('button'));7const { removeNode } = require('playwright/lib/server/dom.js');8removeNode(document.querySelector('button'));9const { removeNode } = require('playwright/lib/server/dom.js');10removeNode(document.querySelector('button'));11const { removeNode } = require('playwright/lib/server/dom.js');12removeNode(document.querySelector('button'));13const { removeNode } = require('playwright/lib/server/dom.js');14removeNode(document.querySelector('button'));15const { removeNode } = require('playwright/lib/server/dom.js');16removeNode(document.querySelector('button'));17const { removeNode } = require('playwright/lib/server/dom.js');18removeNode(document.querySelector('button'));19const { removeNode } = require('playwright/lib/server/dom.js');20removeNode(document.querySelector('button'));21const { removeNode } = require('playwright/lib/server/dom.js');22removeNode(document.querySelector('button'));23const { removeNode } = require('playwright/lib/server/dom.js');24removeNode(document.querySelector('button'));25const { removeNode }
Using AI Code Generation
1const { chromium } = require('playwright');2const { removeNode } = require('playwright/lib/internal/dom.js');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await page.$('input[name="q"]');8 await removeNode(element);9 await browser.close();10})();
Using AI Code Generation
1const { removeNode } = require('@playwright/test/lib/server/dom');2const node = document.querySelector('#myNode');3removeNode(node);4import { removeNode } from '@playwright/test/lib/server/dom';5const node = document.querySelector('#myNode');6removeNode(node);7[Apache 2.0](LICENSE)
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!