def test_add_node_list(self): test_list = LinkList() test_list.add_node("a", "apple") test_list.add_node("z", "zebra") assert test_list.first_node.key == "a" assert test_list.last_node.key == "z" assert test_list.first_node.value == "apple" assert test_list.last_node.value == "zebra"
def __init__(self, parent=None): super().__init__(parent) self.mBanner = Banner(self) self.mIntroTitle = QLabel(self) self.mIntroTitle.setFont(QFont("SegeoUI", 15, QFont.Light)) self.mIntroTitle.setWordWrap(True) self.mIntroTitle.setObjectName("IntroTitle") self.mIntroTitle.setText( "Put the right products on every shelf at every outlet to satisfy ever-evolving customer demands" ) self.mIntroDesc = QTextBrowser(self) self.mIntroDesc.verticalScrollBar().setStyleSheet( VSCROLL_STYLE.NARROW.value) self.mIntroDesc.setFrameShape(QFrame.NoFrame) self.mIntroDesc.setOpenExternalLinks(True) self.mLearnMore = LinkList(self, "Learn more") self.mLearnMore.setSpacing(20) self.mLearnMore.addLinkByText("Solution Overview", "https://deepcognition.ai/") self.mLearnMore.addLinkByText("Sample Data Specifications", "https://deepcognition.ai/") self.mLearnMore.addLinkByText("Arca Continental Case Study", "https://deepcognition.ai/") self.mLayout = QVBoxLayout(self) self.mLayout.setContentsMargins(0, 0, 0, 0) self.mLayout.addWidget(self.mBanner) self.mLayout.addWidget(self.mIntroTitle) self.mLayout.addWidget(self.mIntroDesc) self.mLayout.addWidget(self.mLearnMore, 0, Qt.AlignLeft | Qt.AlignTop) self.setObjectName("IntroFrame") self.setStyleSheet("#IntroFrame{background-color: white;}") self.setAutoFillBackground(True)
class IntroFrame(QFrame): """ Customized widget derived from QFrame which contains placeholder for banner, app intro and app description as well as learn more app description widget is capable of both loading plain text and html file """ def __init__(self, parent=None): super().__init__(parent) self.mBanner = Banner(self) self.mIntroTitle = QLabel(self) self.mIntroTitle.setFont(QFont("SegeoUI", 15, QFont.Light)) self.mIntroTitle.setWordWrap(True) self.mIntroTitle.setObjectName("IntroTitle") self.mIntroTitle.setText( "Put the right products on every shelf at every outlet to satisfy ever-evolving customer demands" ) self.mIntroDesc = QTextBrowser(self) self.mIntroDesc.verticalScrollBar().setStyleSheet( VSCROLL_STYLE.NARROW.value) self.mIntroDesc.setFrameShape(QFrame.NoFrame) self.mIntroDesc.setOpenExternalLinks(True) self.mLearnMore = LinkList(self, "Learn more") self.mLearnMore.setSpacing(20) self.mLearnMore.addLinkByText("Solution Overview", "https://deepcognition.ai/") self.mLearnMore.addLinkByText("Sample Data Specifications", "https://deepcognition.ai/") self.mLearnMore.addLinkByText("Arca Continental Case Study", "https://deepcognition.ai/") self.mLayout = QVBoxLayout(self) self.mLayout.setContentsMargins(0, 0, 0, 0) self.mLayout.addWidget(self.mBanner) self.mLayout.addWidget(self.mIntroTitle) self.mLayout.addWidget(self.mIntroDesc) self.mLayout.addWidget(self.mLearnMore, 0, Qt.AlignLeft | Qt.AlignTop) self.setObjectName("IntroFrame") self.setStyleSheet("#IntroFrame{background-color: white;}") self.setAutoFillBackground(True) def setBannerIcon(self, icon): self.mBanner.setBannerIcon(icon) # var color should be a string value ends with semicolon(;), ex: rgba(0, 125, 225, 255); or white; def setBackgroundColor(self, color): self.mBanner.setBackgroundColor(color) def setBannerText(self, text): self.mBanner.setBannerText(text) def setBannerTextFont(self, font): self.mBanner.setBannerTextFont(font) # var color should be a string value ends with semicolon(;), ex: rgba(0, 125, 225, 255); or white; def setBannerTextColor(self, color): self.mBanner.setBannerTextColor def setBannerLinkText(self, text): self.mBanner.setBannerLinkText(text) def setBannerLinkFont(self, font): self.mBanner.setBannerLinkFont(font) # var color should be a string value ends with semicolon(;), ex: rgba(0, 125, 225, 255); or white; def setBannerLinkColor(self, color): self.mBanner.setBannerLinkColor(color) def setIntroTitleText(self, text): self.mIntroTitle.setText(text) def setIntroTitleFont(self, font): self.mIntroTitle.setFont(font) def setIntroTitleColor(self, color): self.mIntroTitle.setStyleSheet("#IntroTitle{color: " + color + "}") # set plain text as description def setIntroDescText(self, text): self.mIntroDesc.setText(text) # set html string rather than plain text def setIntroDescHtml(self, html): self.mIntroDesc.setHtml(html) # load html from a file instead of plain text def setIntroDescHtmlFile(self, filePath): file = QFile(filePath) if file.open(QIODevice.ReadOnly): stream = QTextStream(file) self.mIntroDesc.setHtml(stream.readAll()) file.close() else: fileInfo = QFileInfo(file) print("Failed to open: " + fileInfo.absolutePath() + "/" + fileInfo.fileName())
def test_clear(self): test_list = LinkList() test_list.add_node("a", "apple") test_list.clear() assert test_list.first_node == None assert test_list.last_node == None
def test_contains_key(self): test_list = LinkList() test_list.add_node("a", "aaa") assert True == test_list.contains_key("a")
def test_delete_node_with_key(self): test_list = LinkList() test_list.add_node("z", "zebra") test_list.delete_node_with_key("z") assert False == test_list.contains_key("z") assert False == test_list.contains_value("zebra")
def test_contains_value(self): test_list = LinkList() test_list.add_node("a", "apple") assert True == test_list.contains_value("apple")
def test_append_new_node_to_list(self): test_node = Node("d", 5) test_list = LinkList() test_list.append_new_node_to_list(test_node)
def _new_hash_entry(key, value): bucket_list = LinkList() bucket_list.add_node(key, value) return bucket_list
def add_edge(self, node1, node2): if (node1 not in self.graph): self.graph[node1] = LinkList(node2) else: head = self.graph[node1] head.append(node2)
from linklist import LinkList from cyclelinklist import CycleLinkedList from doublecyclelinklist import DoubleCycleLinkList import time l1 = LinkList() l2 = LinkList() l1.init_list([1, 3, 5, 7, 9]) l2.init_list([2, 4, 6, 8, 10]) # l1.merge_list(l2) # # l1.show() def merge(l1, l2): p = l1.head q = l2.head.next while p.next is not None: if p.next.item < q.item: p = p.next else: tmp = p.next p.next = q p = p.next q = tmp p.next = q merge(l1, l2) l1.show() l1 = [0, 2, 3, 7, 8]