import tkinter as tkr

master = tkr.Tk()
userlist = []


"""Edit Window"""
master.title("User Registration and Login")
master.geometry("300x250")

tkr.Label(master, text="User Registration and Login").grid(row=0, columnspan=2)

tkr.Label(master, text="First Name").grid(row=1)
tkr.Label(master, text="Last Name").grid(row=2)
tkr.Label(master, text="Email").grid(row=3)
tkr.Label(master, text="Phone Number").grid(row=4)
tkr.Label(master, text="Unique ID").grid(row=5)
tkr.Label(master, text="Username").grid(row=6)
tkr.Label(master, text="Password").grid(row=7)

reg_e1 = tkr.Entry(master)
reg_e2 = tkr.Entry(master)
reg_e3 = tkr.Entry(master)
reg_e4 = tkr.Entry(master)
reg_e5 = tkr.Entry(master)
reg_e6 = tkr.Entry(master)
reg_e7 = tkr.Entry(master, show='*')

reg_e1.grid(row=1, column=1)
reg_e2.grid(row=2, column=1)
reg_e3.grid(row=3, column=1)
reg_e4.grid(row=4, column=1)
reg_e5.grid(row=5, column=1)
reg_e6.grid(row=6, column=1)
reg_e7.grid(row=7, column=1)


def register_user():
    userlist.append([reg_e1.get(), reg_e2.get(), reg_e3.get(), reg_e4.get(), reg_e5.get(), reg_e6.get(), reg_e7.get()])
    print(userlist)
    reg_success = tkr.Tk()
    reg_success.title("Registration Successful")
    reg_success.geometry("200x100")
    tkr.Label(reg_success, text="Your account has been created!").grid(row=1)

def login_user():
    for user in userlist:
        if user[4] == login_e1.get() and user[5] == login_e2.get() and user[6] == login_e3.get():
            login_success = tkr.Tk()
            login_success.title("Login Successful")
            login_success.geometry("200x100")
            tkr.Label(login_success, text="Welcome, "+user[0]+"!").grid(row=1)
            return
    login_fail = tkr.Tk()
    login_fail.title("Login Failed")
    login_fail.geometry("200x100")
    tkr.Label(login_fail, text="Invalid login credentials").grid(row=1)

"""Registration Button"""
reg_button = tkr.Button(master, width=7, height=1, text="Register", command=register_user) 
reg_button.grid(row=8, column=1, padx=3, pady=3)

"""Login Window"""
login_window = tkr.Frame(master)
login_window.grid(row=9, columnspan=2)

tkr.Label(login_window, text="Login").grid(row=0, columnspan=2)
tkr.Label(login_window, text="Unique ID").grid(row=1)
tkr.Label(login_window, text="Username").grid(row=2)
tkr.Label(login_window, text="Password").grid(row=3)

login_e1 = tkr.Entry(login_window)
login_e2 = tkr.Entry(login_window)
login_e3 = tkr.Entry(login_window, show='*')

login_e1.grid(row=1, column=1)
login_e2.grid(row=2, column=1)
login_e3.grid(row=3, column=1)

"""Login Button"""
login_button = tkr.Button(login_window, width=7, height=1, text="Login", command=login_user) 
login_button.grid(row=4, column=1, padx=3, pady=3)

"""Quit Button"""
quit_button = tkr.Button(master, width=7, height=1, text="Quit", command=master.destroy) 
quit_button.grid(row=10, column=0, padx=3, pady=3)

tkr.mainloop()

import unittest
import tkinter as tkr

class TestUserRegistrationAndLogin(unittest.TestCase):

    def test_register_user(self):
        master = tkr.Tk()
        userlist = []

        reg_e1 = tkr.Entry(master)
        reg_e2 = tkr.Entry(master)
        reg_e3 = tkr.Entry(master)
        reg_e4 = tkr.Entry(master)
        reg_e5 = tkr.Entry(master)
        reg_e6 = tkr.Entry(master)
        reg_e7 = tkr.Entry(master, show='*')

        reg_e1.insert(0, "John")
        reg_e2.insert(0, "Doe")
        reg_e3.insert(0, "johndoe@example.com")
        reg_e4.insert(0, "1234567890")
        reg_e5.insert(0, "123")
        reg_e6.insert(0, "johndoe")
        reg_e7.insert(0, "password123")

        def register_user():
            userlist.append([reg_e1.get(), reg_e2.get(), reg_e3.get(), reg_e4.get(), reg_e5.get(), reg_e6.get(), reg_e7.get()])

        reg_button = tkr.Button(master, width=7, height=1, text="Register", command=register_user)
        reg_button.invoke()

        self.assertEqual(len(userlist), 1)
        self.assertEqual(userlist[0][0], "John")
        self.assertEqual(userlist[0][1], "Doe")
        self.assertEqual(userlist[0][2], "johndoe@example.com")
        self.assertEqual(userlist[0][3], "1234567890")
        self.assertEqual(userlist[0][4], "123")
        self.assertEqual(userlist[0][5], "johndoe")
        self.assertEqual(userlist[0][6], "password123")

    def test_login_user(self):
        master = tkr.Tk()
        userlist = [["John", "Doe", "johndoe@example.com", "1234567890", "123", "johndoe", "password123"]]

        login_e1 = tkr.Entry(master)
        login_e2 = tkr.Entry(master)
        login_e3 = tkr.Entry(master, show='*')

        login_e1.insert(0, "123")
        login_e2.insert(0, "johndoe")
        login_e3.insert(0, "password123")

        def login_user():
            for user in userlist:
                if user[4] == login_e1.get() and user[5] == login_e2.get() and user[6] == login_e3.get():
                    return True
            return False

        login_button = tkr.Button(master, width=7, height=1, text="Login", command=login_user)
        self.assertTrue(login_button.invoke())

        login_e1.delete(0, tkr.END)
        login_e2.delete(0, tkr.END)
        login_e3.delete(0, tkr.END)

        login_e1.insert(0, "456")
        login_e2.insert(0, "janedoe")
        login_e3.insert(0, "password456")

        self.assertFalse(login_button.invoke())

if __name__ == '__main__':
    unittest.main()
