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)
Esempio n. 9
0
 def _new_hash_entry(key, value):
     bucket_list = LinkList()
     bucket_list.add_node(key, value)
     return bucket_list
Esempio n. 10
0
 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)
Esempio n. 11
0
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]