import pyqtgraph as pg
pg.mkQApp()

def test_combobox():
    cb = pg.ComboBox()
    items = {'a': 1, 'b': 2, 'c': 3}
    cb.setItems(items)
    cb.setValue(2)
    assert str(cb.currentText()) == 'b'
    assert cb.value() == 2
    
    # Clear item list; value should be None
    cb.clear()
    assert cb.value() == None
    
    # Reset item list; value should be set automatically
    cb.setItems(items)
    assert cb.value() == 2
    
    # Clear item list; repopulate with same names and new values
    items = {'a': 4, 'b': 5, 'c': 6}
    cb.clear()
    cb.setItems(items)
    assert cb.value() == 5
    
    # Set list instead of dict
    cb.setItems(list(items.keys()))
    assert str(cb.currentText()) == 'b'
    
    cb.setValue('c')
    assert cb.value() == str(cb.currentText())
    assert cb.value() == 'c'
    
    cb.setItemValue('c', 7)
    assert cb.value() == 7
    
    
if __name__ == '__main__':
    cb = pg.ComboBox()
    cb.show()
    cb.setItems({'': None, 'a': 1, 'b': 2, 'c': 3})
    def fn(ind):
        print("New value: %s" % cb.value())
    cb.currentIndexChanged.connect(fn)