public void Constructor() { var result = new EmployeeChange(_employee, _employee, "SomeDetails"); Assert.IsTrue(result.Date - DateTime.Now < new TimeSpan(0, 0, 0, 2)); Assert.AreEqual(result.Details, "SomeDetails"); }
public void CopyConstructor() { var temp = new EmployeeChange(_employee, _employee, "SomeDetails"); temp.Id = 2; var result = new EmployeeChange(temp); Assert.AreEqual(result.Date, temp.Date); Assert.AreEqual(result.Employee, temp.Employee); Assert.AreEqual(result.Details, temp.Details); Assert.AreEqual(result.Id, temp.Id); }
private void compare(List <Employee> list1, List <Employee> list2) { Dictionary <string, Employee> old = new Dictionary <string, MainForm.Employee>(); Dictionary <string, Employee> current = new Dictionary <string, MainForm.Employee>(); Dictionary <string, List <EmployeeChange> > changeList = new Dictionary <string, List <EmployeeChange> >(); foreach (Employee item in list1) { old.Add(item.alias, item); } foreach (Employee item in list2) { current.Add(item.alias, item); } foreach (Employee item in list1) { if (!current.ContainsKey(item.alias)) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "QUIT"; change.old = item.title; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } } try { foreach (Employee item in list2) { if (!old.ContainsKey(item.alias)) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "NEW"; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); continue; } if (old[item.alias].boss != item.boss) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "BOSS CNG"; change.old = old[item.alias].boss; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].org != item.org) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "ORG CNG"; change.old = old[item.alias].org; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].office != item.office) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "OFFICE CNG"; change.old = old[item.alias].office; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].title != item.title) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "TITLE CNG"; change.old = simpleTitle(old[item.alias].title); string currentTitle = simpleTitle(item.title); if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].email != item.email) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "EMAIL CNG"; change.old = old[item.alias].email; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].name != item.name) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "NAME CNG"; change.old = old[item.alias].name; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old.ContainsKey(item.alias) && old[item.alias].surname != item.surname) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "NAME CNG"; change.old = old[item.alias].surname; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } if (old[item.alias].chtName != item.chtName) { EmployeeChange change = new EmployeeChange(); change.current = item; change.type = "NAME CNG"; change.old = old[item.alias].chtName; if (!changeList.ContainsKey(change.current.alias)) { changeList.Add(change.current.alias, new List <EmployeeChange>()); } changeList[change.current.alias].Add(change); } } } catch (Exception e) { } int newer = 0; int quiter = 0; int bossCng = 0; int nameCng = 0; Dictionary <string, int> titleChange = new Dictionary <string, int>(); Dictionary <string, int> titleChangeOrg = new Dictionary <string, int>(); Dictionary <string, int> quitTitle = new Dictionary <string, int>(); Dictionary <string, int> quitTitleOrg = new Dictionary <string, int>(); Dictionary <string, int> newerTitle = new Dictionary <string, int>(); Dictionary <string, int> newerTitleOrg = new Dictionary <string, int>(); Dictionary <string, int> bossChgTitle = new Dictionary <string, int>(); Dictionary <string, int> bossChgTitleOrg = new Dictionary <string, int>(); try { foreach (List <EmployeeChange> item in changeList.Values) { foreach (EmployeeChange subitem in item) { if (subitem.type == "NEW") { newer++; if (subitem.current != null) { if (!newerTitle.ContainsKey(subitem.current.title)) { newerTitle.Add(subitem.current.title, 1); } else { newerTitle[subitem.current.title]++; } string org = simpleOrg(subitem.current.org); if (!newerTitleOrg.ContainsKey(org)) { newerTitleOrg.Add(org, 1); } else { newerTitleOrg[org]++; } } } else if (subitem.type == "QUIT") { quiter++; if (subitem.old != null) { if (!quitTitle.ContainsKey(subitem.old)) { quitTitle.Add(subitem.old, 1); } else { quitTitle[subitem.old]++; } string org = simpleOrg(subitem.current.org); if (!quitTitleOrg.ContainsKey(org)) { quitTitleOrg.Add(org, 1); } else { quitTitleOrg[org]++; } } } else if (subitem.type == "BOSS CNG") { bossCng++; if (subitem.current != null) { if (!bossChgTitle.ContainsKey(subitem.current.title)) { bossChgTitle.Add(subitem.current.title, 1); } else { bossChgTitle[subitem.current.title]++; } string org = simpleOrg(subitem.current.org); if (!bossChgTitleOrg.ContainsKey(org)) { bossChgTitleOrg.Add(org, 1); } else { bossChgTitleOrg[org]++; } } } else if (subitem.type == "NAME CNG") { nameCng++; } else if (subitem.type == "TITLE CNG") { string currentTitle = simpleTitle(subitem.current.title); if (subitem.old != currentTitle) { string str = currentTitle; string org = simpleOrg(subitem.current.org); if (!titleChangeOrg.ContainsKey(org)) { titleChangeOrg.Add(org, 1); } else { titleChangeOrg[org]++; } if (!titleChange.ContainsKey(str)) { titleChange.Add(str, 0); } titleChange[str]++; } else { } } } } } catch { } try { StringBuilder sb = new StringBuilder(); sb.AppendLine("新來的: " + newer); sb.AppendLine(getTitleOrderCount(newerTitle)); sb.AppendLine(getOrgDistr(newerTitleOrg)); sb.AppendLine("-----------------------------------------"); sb.AppendLine("走掉的: " + quiter); sb.AppendLine(getTitleOrderCount(quitTitle)); sb.AppendLine(getOrgDistr(quitTitleOrg)); sb.AppendLine("-----------------------------------------"); sb.AppendLine("換名字: " + nameCng); sb.AppendLine("換老闆: " + bossCng); sb.AppendLine(getTitleOrderCount(bossChgTitle)); sb.AppendLine(getOrgDistr(bossChgTitleOrg)); sb.AppendLine("-----------------------------------------"); int titleCngCount = 0; foreach (int item in titleChange.Values) { titleCngCount += item; } sb.AppendLine("升官: " + titleCngCount + " / " + old.Count + " (" + string.Format("{0:P}", (float)titleCngCount / old.Count) + ")"); sb.AppendLine(getTitleOrderCount(titleChange)); sb.AppendLine(getOrgDistr(titleChangeOrg)); chagneTextBox.Text = sb.ToString(); sb.AppendLine("-----------------------------------------"); } catch { } }