/// <summary> /// Interactive world map initializer. /// </summary> public InteractiveWorldMap() { InitializeComponent(); _countries = GetCountryList(); _countrySet = GetCountryDestinationSet(_countries); picCountry.Hide(); }
public void DestinationSet_Dest_ContiguousRange() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("a", 330); ds.AddArea("a", 331); ds.AddArea("b", 332); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.AreEqual<string>("330-331", ds.Destinations["a"].ToString()); }
public void DestinationSet_Dest_2_Dest_Overlap() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("a", 33); ds.AddArea("b", 332); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.AreEqual<string>("33", ds.Destinations["a"].ToString()); Assert.AreEqual<string>("332", ds.Destinations["b"].ToString()); }
public void AreaRectangle_DestinationSet_GetRepresentation_Default() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("d1", "2, 22, 223"); ds.UpdateDestination("d2", "1, 1234, 3"); List<AreaRectangle<string>> ars = Painter.GetRepresentation<Destination<string>, string>(ds); Assert.AreEqual<int>(6, ars.Count, "expected rectangles created"); Assert.AreEqual<int>(2, ars.Select(x => x.Id).Distinct().Count(), "expected distinct descriptions"); Assert.AreEqual<string>("d2", ars.First().Id, "id"); //order }
public void DestinationSet_Dest_2_Dest_Disjoint() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("a", 330); ds.AddArea("b", 332); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.IsTrue(ds.Destinations.ContainsKey("a")); Assert.IsTrue(ds.Destinations.ContainsKey("b")); Assert.AreEqual<string>("330", ds.Destinations["a"].ToString()); Assert.AreEqual<string>("332", ds.Destinations["b"].ToString()); }
public void DestinationSet_Dest_2_Mod_Dest() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("a", 33); ds.AddArea("b", 332); Assert.AreEqual(3, ds.Destinations.Count); Assert.AreEqual("33", ds.Destinations["a"].ToString()); Assert.AreEqual("332", ds.Destinations["b"].ToString()); ds.AddArea("b", 333); Assert.AreEqual(3, ds.Destinations.Count); Assert.AreEqual("33", ds.Destinations["a"].ToString()); Assert.AreEqual("332-333", ds.Destinations["b"].ToString()); }
public void Destination_AddAlreadyExistingArea() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "330-332,338"); Assert.AreEqual<string>("330-332,338", ds.Destinations["a"].ToString()); ds.AddArea("a", 331); Assert.AreEqual<string>("330-332,338", ds.Destinations["a"].ToString()); }
public void Destination_UpdateDestinationContainingCoveredAreaCodeRemoveCode() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "33,3341"); ds.UpdateDestination("b", "334"); ds.UpdateDestination("a", "33"); Assert.AreEqual<string>("330-333,335-339", ds.ExplicitDestinations["a"].ToString()); Assert.AreEqual<string>("334", ds.ExplicitDestinations["b"].ToString()); }
public void Destination_SingleAreaWithMultipleCode() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "33"); ds.AddArea("a", 34); Assert.AreEqual<string>("33-34", ds.Destinations["a"].ToString()); }
public void Destination_RemoveNotExistingArea() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "330-332,338"); Assert.AreEqual("330-332,338", ds.Destinations["a"].ToString()); ds.RemoveArea(3312); }
public void Destination_OverlapAreaOpt() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "33,332"); Assert.AreEqual<string>("33,332", ds.Destinations["a"].ToString()); }
public void DestinationSet_Mapping_SameDestSetWithoutChanges() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.AddArea("AFGHANISTAN-FIX", 93); ds1.AddArea("AFGHANISTAN-MOBILE OTHERS", 937); ds1.AddArea("AFGHANISTAN-MOBILE AREEBA", 9377); ds1.AddArea("AFGHANISTAN-MOBILE ETISALAT", 9378); ds1.AddArea("AFGHANISTAN-MOBILE ROSHAN", 9379); ds1.AddArea("ALBANIA", 355); ds1.UpdateDestination("ALBANIA-MOBILE", "35566 - 35569"); ds1.AddArea("ALBANIA-TIRANA", 3554); ds1.AddArea("ALGERIA", 213); ds1.UpdateDestination("ALGERIA-MOBILE ORASCOM", "21377; 213780; 21379".Replace(';', ',')); ds1.UpdateDestination("ALGERIA-MOBILE OTHERS", "213659; 21366; 213670; 21369; 21396190-21396192".Replace(';', ',')); ds1.AddArea("ALGERIA-MOBILE WATANIYA", 2135); ds1.AddArea("AMERICAN SAMOA", 1684); ds1.AddArea("ANDORRA", 376); ds1.UpdateDestination("ANDORRA-MOBILE", "3763 - 3766"); //add same set with different order of the elements, map should be 1:1 DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.AddArea("AFGHANISTAN-FIX", 93); ds2.AddArea("AFGHANISTAN-MOBILE OTHERS", 937); ds2.AddArea("AFGHANISTAN-MOBILE ROSHAN", 9379); ds2.AddArea("AFGHANISTAN-MOBILE AREEBA", 9377); ds2.AddArea("AFGHANISTAN-MOBILE ETISALAT", 9378); ds2.AddArea("ANDORRA", 376); ds2.UpdateDestination("ANDORRA-MOBILE", "3763 - 3766"); ds2.AddArea("ALBANIA", 355); ds2.AddArea("ALBANIA-TIRANA", 3554); ds2.UpdateDestination("ALBANIA-MOBILE", "35566 - 35569"); ds2.AddArea("ALGERIA", 213); ds2.UpdateDestination("ALGERIA-MOBILE OTHERS", "213659; 21366; 213670; 21369; 21396190-21396192".Replace(';', ',')); ds2.UpdateDestination("ALGERIA-MOBILE ORASCOM", "21377; 213780; 21379".Replace(';', ',')); // ds2.AddArea("ALGERIA-MOBILE WATANIYA", 2135); ds2.AddArea("AMERICAN SAMOA", 1684); DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); Assert.AreEqual<int>(16, maps.Maps.Count, "Fully mapped destinations"); Assert.AreEqual<int>(0, maps.LostAreaCodes.Count, "Lost areas"); Assert.AreEqual<int>(0, maps.GainedAreaCodes.Count, "Gained areas"); //skip the default destination foreach (string sDestinationName in ds2.Destinations.Select(x => x.Key).Except(new string[] { string.Empty })) { Assert.IsTrue(maps[sDestinationName].HasMapping); Assert.IsTrue(maps[sDestinationName].IsFullyMapped); Assert.IsFalse(maps[sDestinationName].IsMultiMapped); Assert.IsFalse(maps[sDestinationName].IsPartiallyMapped); } }
public void DestinationSet_Mapping_RSI_SwedenMobileExample() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.AddArea("SWEDEN", 46); ds1.AddArea("SWEDEN-MOBILE", 467); //define just main destinations DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.AddArea("SWEDEN", 46); ds2.UpdateDestination("SWEDEN-MOBILE 1", "4670-4675"); ds2.UpdateDestination("SWEDEN-MOBILE 2", "4676-4678"); DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); Assert.AreEqual<int>(3, maps.GetMappedDestination("SWEDEN-MOBILE").Count()); Assert.AreEqual<int>(1, maps.GetMappedDestination("SWEDEN").Count()); Assert.IsTrue(maps["SWEDEN"].IsFullyMapped); Assert.IsTrue(maps["SWEDEN-MOBILE"].IsMultiMapped); Assert.AreEqual<string>("4670-4675", maps.Maps[new KeyValuePair<string, string>("SWEDEN-MOBILE", "SWEDEN-MOBILE 1")].ToString()); Assert.AreEqual<string>("4676-4678", maps.Maps[new KeyValuePair<string, string>("SWEDEN-MOBILE", "SWEDEN-MOBILE 2")].ToString()); Assert.AreEqual<string>("4679", maps.Maps[new KeyValuePair<string, string>("SWEDEN-MOBILE", "SWEDEN")].ToString()); }
public void DestinationSet_Mapping_RSI_ChildDestinationMovedToMain() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.AddArea("AFGHANISTAN-FIX", 93); ds1.AddArea("AFGHANISTAN-MOBILE OTHERS", 937); ds1.AddArea("AFGHANISTAN-MOBILE AREEBA", 9377); ds1.AddArea("AFGHANISTAN-MOBILE ETISALAT", 9378); ds1.AddArea("AFGHANISTAN-MOBILE ROSHAN", 9379); ds1.AddArea("ALBANIA", 355); ds1.UpdateDestination("ALBANIA-MOBILE", "35566 - 35569"); ds1.AddArea("ALBANIA-TIRANA", 3554); //define just main destinations DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.AddArea("AFGHANISTAN-FIX", 93); ds2.AddArea("ALBANIA", 355); DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); //maps Assert.AreEqual<int>(9, maps.Maps.Count, "Fully mapped destinations"); Assert.AreEqual<string>("930-936,938-939", maps.Maps[new KeyValuePair<string, string>("AFGHANISTAN-FIX", "AFGHANISTAN-FIX")].ToString()); Assert.AreEqual<string>("9370-9376", maps.Maps[new KeyValuePair<string, string>("AFGHANISTAN-MOBILE OTHERS", "AFGHANISTAN-FIX")].ToString()); Assert.AreEqual<string>("9377", maps.Maps[new KeyValuePair<string, string>("AFGHANISTAN-MOBILE AREEBA", "AFGHANISTAN-FIX")].ToString()); Assert.AreEqual<string>("9378", maps.Maps[new KeyValuePair<string, string>("AFGHANISTAN-MOBILE ETISALAT", "AFGHANISTAN-FIX")].ToString()); Assert.AreEqual<string>("9379", maps.Maps[new KeyValuePair<string, string>("AFGHANISTAN-MOBILE ROSHAN", "AFGHANISTAN-FIX")].ToString()); Assert.AreEqual<string>("3550-3553,35550-35565,3557-3559", maps.Maps[new KeyValuePair<string, string>("ALBANIA", "ALBANIA")].ToString()); Assert.AreEqual<string>("35566-35569", maps.Maps[new KeyValuePair<string, string>("ALBANIA-MOBILE", "ALBANIA")].ToString()); Assert.AreEqual<string>("3554", maps.Maps[new KeyValuePair<string, string>("ALBANIA-TIRANA", "ALBANIA")].ToString()); //lost area codes Assert.AreEqual<int>(6, maps.LostAreaCodes.Count, "Lost areas"); Assert.AreEqual<string>("9370-9376", maps.LostAreaCodes["AFGHANISTAN-MOBILE OTHERS"].ToString()); Assert.AreEqual<string>("9377", maps.LostAreaCodes["AFGHANISTAN-MOBILE AREEBA"].ToString()); Assert.AreEqual<string>("9378", maps.LostAreaCodes["AFGHANISTAN-MOBILE ETISALAT"].ToString()); Assert.AreEqual<string>("9379", maps.LostAreaCodes["AFGHANISTAN-MOBILE ROSHAN"].ToString()); Assert.AreEqual<string>("35566-35569", maps.LostAreaCodes["ALBANIA-MOBILE"].ToString()); Assert.AreEqual<string>("3554", maps.LostAreaCodes["ALBANIA-TIRANA"].ToString()); //gained area codes Assert.AreEqual<int>(2, maps.GainedAreaCodes.Count, "Gained areas"); Assert.AreEqual<string>("937", maps.GainedAreaCodes["AFGHANISTAN-FIX"].ToString()); Assert.AreEqual<string>("3554,35566-35569", maps.GainedAreaCodes["ALBANIA"].ToString()); }
public void DestinationSet_Mapping_ChildDestinationSwap() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.AddArea("AFGHANISTAN-FIX", 93); ds1.AddArea("AFGHANISTAN-MOBILE OTHERS", 937); ds1.AddArea("AFGHANISTAN-MOBILE AREEBA", 9377); //do not include AFGHANISTAN-MOBILE ETISALAT ds1.AddArea("AFGHANISTAN-MOBILE ROSHAN", 9379); DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.AddArea("AFGHANISTAN-FIX", 93); ds2.AddArea("AFGHANISTAN-MOBILE OTHERS", 937); ds2.AddArea("AFGHANISTAN-MOBILE AREEBA", 9377); ds2.AddArea("AFGHANISTAN-MOBILE ETISALAT", 9378); //do not include AFGHANISTAN-MOBILE ROSHAN DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); Assert.AreEqual<int>(6, maps.Count); Assert.AreEqual<int>(2, maps.LostAreaCodes.Count); Assert.AreEqual<int>(2, maps.GainedAreaCodes.Count); Assert.AreEqual<string>("9379", maps.LostAreaCodes["AFGHANISTAN-MOBILE ROSHAN"].ToString()); Assert.AreEqual<string>("9378", maps.LostAreaCodes["AFGHANISTAN-MOBILE OTHERS"].ToString()); Assert.AreEqual<string>("9378", maps.GainedAreaCodes["AFGHANISTAN-MOBILE ETISALAT"].ToString()); Assert.AreEqual<string>("9379", maps.GainedAreaCodes["AFGHANISTAN-MOBILE OTHERS"].ToString()); }
public void DestinationSet_Empty() { DestinationSet<string> ds = new DestinationSet<string>(); Assert.AreEqual<int>(1, ds.ExplicitDestinations.Count); Assert.IsTrue(ds.ExplicitDestinations.ContainsKey(ds.UndefinedDestinationId)); Assert.IsTrue(ds.Destinations.ContainsKey(ds.UndefinedDestinationId)); Assert.AreEqual<string>("0-9", ds.ExplicitDestinations[ds.UndefinedDestinationId].ToString()); Assert.AreEqual<string>("0-9", ds.Destinations[ds.UndefinedDestinationId].ToString()); Assert.AreEqual<int>(1, ds.Destinations.Count); Assert.IsTrue(ds.Destinations.ContainsKey(ds.UndefinedDestinationId)); Assert.AreEqual<string>("0-9", ds.Destinations[ds.UndefinedDestinationId].ToString()); Assert.AreEqual<string>("0-9", ds.Destinations[ds.UndefinedDestinationId].ToString()); }
public void DestinationSet_Diff_Dest_Map_Overlap() { DestinationSet<string> ds1 = new DestinationSet<string>(); DestinationSet<string> ds2 = new DestinationSet<string>(); ds1.AddArea("ds1a", 33); ds1.AddArea("ds1b", 332); ds2.AddArea("ds2a", 33); ds2.AddArea("ds2b", 334); DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); Assert.AreEqual(4, maps.Count); Assert.AreEqual("330-331,333,335-339", maps.GetMappedAreas("ds1a", "ds2a")); Assert.AreEqual("334", maps.GetMappedAreas("ds1a", "ds2b")); Assert.AreEqual("332", maps.GetMappedAreas("ds1b", "ds2a")); Assert.AreEqual(2, maps.LostAreaCodes.Count); Assert.AreEqual("332", maps.LostAreaCodes["ds1b"].ToString()); Assert.AreEqual("330-331,333-339", maps.LostAreaCodes["ds1a"].ToString()); Assert.AreEqual(2, maps.GainedAreaCodes.Count); Assert.AreEqual("330-333,335-339", maps.GainedAreaCodes["ds2a"].ToString()); Assert.AreEqual("334", maps.GainedAreaCodes["ds2b"].ToString()); }
public void Destination_AddAreaExistingAreaInOtherDest() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "330-332,338"); ds.UpdateDestination("b", "337"); ds.AddArea("b", 331); }
public void Destination_CreateDestinationWithExistingAreaInOtherDest() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "330-332,338"); ds.UpdateDestination("b", "330"); }
public void DestinationSet_Mapping_SameRoutingDestination_Chile() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.UpdateDestination("CHILE", "56"); ds1.UpdateDestination("CHILE-EASTER ISLAND", "5632100,563221,563225,563255"); ds1.UpdateDestination("CHILE-MOBILE", "569,568"); ds1.UpdateDestination("CHILE-SANTIAGO", "562"); ds1.UpdateDestination("CHILE-SPECIAL SERVICES", "5615,5611,56322100,5632255,5645197"); //add same routing destination, expected 1:1 DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.UpdateDestination("CHILE", "56"); ds2.UpdateDestination("CHILE-EASTER ISLAND", "5632100,563221,563225,563255"); ds2.UpdateDestination("CHILE-MOBILE", "569,568"); ds2.UpdateDestination("CHILE-SANTIAGO", "562"); ds2.UpdateDestination("CHILE-SPECIAL SERVICES", "5615,5611,56322100,5632255,5645197"); DestinationSetBase.MappingResult<string> maps = ds1.MapToDestinationSet(ds2); Assert.AreEqual<int>(6, maps.Maps.Count, "Fully mapped destinations"); Assert.AreEqual<int>(0, maps.LostAreaCodes.Count, "Lost areas"); Assert.AreEqual<int>(0, maps.GainedAreaCodes.Count, "Gained areas"); Assert.IsTrue(maps["CHILE"].IsFullyMapped); Assert.IsTrue(maps["CHILE-EASTER ISLAND"].IsFullyMapped); Assert.IsTrue(maps["CHILE-MOBILE"].IsFullyMapped); Assert.IsTrue(maps["CHILE-SANTIAGO"].IsFullyMapped); Assert.IsTrue(maps["CHILE-SPECIAL SERVICES"].IsFullyMapped); }
public void Destination_PopulateByDatatable() { DestinationSet<string> ds = new DestinationSet<string>(); DataTable dt = new DataTable(); dt.Columns.Add("MOCK", typeof(System.Object)); DataColumn DestinationColumn = dt.Columns.Add("D", typeof(System.String)); DataColumn AreaColumn = dt.Columns.Add("A", typeof(System.String)); dt.Rows.Add(new object[] { DBNull.Value, "destination1", "123-125" }); dt.Rows.Add(new object[] { 12, "destination2", "34567" }); dt.Rows.Add(new object[] { 12, "destination2", DBNull.Value }); dt.Rows.Add(new object[] { 12, "destination2", string.Empty }); dt.Rows.Add(new object[] { 12, DBNull.Value, DBNull.Value }); dt.Rows.Add(new object[] { 12, string.Empty, "1" }); dt.Rows.Add(new object[] { 12, "destination1", "2" }); ds.Populate(dt.Select(), DestinationColumn, AreaColumn, false); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.AreEqual("123-125,2", ds.Destinations["destination1"].ToString()); Assert.AreEqual("34567", ds.Destinations["destination2"].ToString()); }
public void DestinationSet_Mapping_SameRoutingDestination_LeastSignificantZerosOrder() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.UpdateDestination("GERMANY-SERVICES", "4915"); ds1.UpdateDestination("GERMANY-E-PLUS", "49150"); //add same routing destination, expected 1:1 DestinationSet<string> ds2 = new DestinationSet<string>(); ds2.UpdateDestination("GERMANY-E-PLUS", "49150"); ds2.UpdateDestination("GERMANY-SERVICES", "4915"); DestinationSetBase.MappingResult<string> maps1to2 = ds1.MapToDestinationSet(ds2); Assert.AreEqual<int>(3, maps1to2.Maps.Count, "Fully mapped destinations"); Assert.AreEqual<int>(0, maps1to2.LostAreaCodes.Count, "Lost areas"); Assert.AreEqual<int>(0, maps1to2.GainedAreaCodes.Count, "Gained areas"); Assert.IsTrue(maps1to2["GERMANY-E-PLUS"].IsFullyMapped); Assert.IsTrue(maps1to2["GERMANY-SERVICES"].IsFullyMapped); DestinationSetBase.MappingResult<string> maps2to1 = ds2.MapToDestinationSet(ds1); Assert.AreEqual<int>(3, maps2to1.Maps.Count, "Fully mapped destinations"); Assert.AreEqual<int>(0, maps2to1.LostAreaCodes.Count, "Lost areas"); Assert.AreEqual<int>(0, maps2to1.GainedAreaCodes.Count, "Gained areas"); Assert.IsTrue(maps2to1["GERMANY-E-PLUS"].IsFullyMapped); Assert.IsTrue(maps2to1["GERMANY-SERVICES"].IsFullyMapped); }
public void Destination_PopulateByDictionary() { DestinationSet<string> ds = new DestinationSet<string>(); Dictionary<string, string> Dict = new Dictionary<string, string>(); Dict.Add("destination1", "123-125, 2"); Dict.Add("destination2", "34567"); ds.Populate(Dict); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.AreEqual<string>("123-125,2", ds.Destinations["destination1"].ToString()); Assert.AreEqual<string>("34567", ds.Destinations["destination2"].ToString()); }
public void DestinationSet_Standardize_WhenAreaNeedToBeRemoved() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("SWEDEN", 46); ds.UpdateDestination("SWEDEN-MOBILE 1", "4670-4675"); ds.UpdateDestination("SWEDEN-MOBILE 2", "4676-4678, 46777"); ds.UpdateDestination("ITALY", "39, 392, 391"); ds.UpdateDestination("ITALY-MOBILE 1", "3970-3975, 397123"); ds.UpdateDestination("ITALY-MOBILE 2", "3976-3978, 397787-397789, 3971234"); ds.Standardize(); Assert.AreEqual<string>("46", ds["SWEDEN"].ToString(), "Sweden destination area codes"); Assert.AreEqual<string>("4670-4675", ds["SWEDEN-MOBILE 1"].ToString(), "Sweden-mobile 1 destination area codes"); Assert.AreEqual<string>("4676-4678", ds["SWEDEN-MOBILE 2"].ToString(), "Sweden-mobile 2 destination area codes"); Assert.AreEqual<string>("39", ds["ITALY"].ToString(), "Italy destination area codes"); Assert.AreEqual<string>("3970-3975", ds["ITALY-MOBILE 1"].ToString(), "Italy-mobile 1 destination area codes"); Assert.AreEqual<string>("3971234,3976-3978", ds["ITALY-MOBILE 2"].ToString(), "Italy-mobile 2 destination area codes"); }
public void Destination_SingleArea() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "33"); Assert.AreEqual<string>("33", ds.Destinations["a"].ToString()); }
public void DestinationSet_Dest_CorrectHandlingAreaCodes() { DestinationSet<string> ds1 = new DestinationSet<string>(); ds1.UpdateDestination("A", "33;334"); ds1.UpdateDestination("B", "33"); }
public void Destination_UpdateDestination() { DestinationSet<string> ds = new DestinationSet<string>(); ds.UpdateDestination("a", "330-332,338"); ds.UpdateDestination("a", "1,330"); ds.AddArea("a", 332); Assert.AreEqual<string>("1,330,332", ds.Destinations["a"].ToString()); }
public static DefaultProcess CreateSampleProcess() { // Create new process DefaultProcess process = WorkflowFactory.CreateProcess <DefaultProcess>("Sample Approval Process", WizardNames.DefaultProcess); // Add some data fields with default values DataField fromEmailDataField = new DataField("From Email", "*****@*****.**"); DataField toEmailDataField = new DataField("To Email", "*****@*****.**"); process.DataFields.Add(fromEmailDataField); process.DataFields.Add(toEmailDataField); // Create 3 activities and add them to the process DefaultActivity awaitApprovalActivity = WorkflowFactory.CreateActivity <DefaultActivity>("Await approval", WizardNames.DefaultActivity); DefaultActivity approvedActivity = WorkflowFactory.CreateActivity <DefaultActivity>("Approved", WizardNames.DefaultActivity); DefaultActivity declinedActivity = WorkflowFactory.CreateActivity <DefaultActivity>("Declined", WizardNames.DefaultActivity); process.Activities.Add(awaitApprovalActivity); process.Activities.Add(approvedActivity); process.Activities.Add(declinedActivity); // Create a client event ClientEvent approvalClientEvent = WorkflowFactory.CreateEvent <ClientEvent>("Get client approval", WizardNames.DefaultClientEvent); SourceCode.Workflow.Design.DefaultClientWizardDefinition a = new DefaultClientWizardDefinition(); // Configure the client event approvalClientEvent.EventItem.InternetPlatform = "ASP"; approvalClientEvent.EventItem.SendToInternet = true; approvalClientEvent.EventItem.InternetUrl = K2FieldFactory.CreateK2Field( typeof(string), new ValueTypePart("http://webserver/page.aspx?"), new SerialNoFieldPart()); // Add event to the activity so that the helper methods for generating // the default outcomes will work correctly awaitApprovalActivity.Events.Add(approvalClientEvent); // Add two actions for the client event EventAction approveAction = WorkflowFactory.CreateK2Object <EventAction>("Approve"); approveAction.ActionItem = new DefaultOutcomeAction(); EventAction declineAction = WorkflowFactory.CreateK2Object <EventAction>("Decline"); declineAction.ActionItem = new DefaultOutcomeAction(); approvalClientEvent.Actions.Add(approveAction); approvalClientEvent.Actions.Add(declineAction); // Set the activity succeeding rule to the outcome succeeding rule awaitApprovalActivity.SucceedingRule = new DefaultOutcomeSucceedingRule(); // Find the default succeeding rule property wizard definition, // and replace it with the default outcome succeeding rule PropertyWizardDefinition propWizDefSimple = WorkflowHelpers.FindOfType <SimpleSucceedingRulePropertyWizardDefinition>(awaitApprovalActivity.WizardDefinition.PropertyWizardDefinitions); PropertyWizardDefinition propWizDefOutcome = WorkflowHelpers.FindOfType <OutcomeSucceedingRulePropertyWizardDefinition>(awaitApprovalActivity.WizardDefinition.PropertyWizardDefinitions); if (propWizDefSimple != null && propWizDefOutcome == null) { awaitApprovalActivity.WizardDefinition.PropertyWizardDefinitions.Remove(propWizDefSimple); awaitApprovalActivity.WizardDefinition.PropertyWizardDefinitions.Add( WorkflowFactory.CreatePropertyWizardDefinition(PropertyWizardNames.OutcomeSucceedingRule)); } SourceCode.Workflow.Design.Outcome.Common.GenerateDefaultOutcomesForActions(approvalClientEvent); SourceCode.Workflow.Design.Outcome.Common.GenerateDefaultLinesForOutcomes(awaitApprovalActivity.SucceedingRule as DefaultOutcomeSucceedingRule); // Add some destination users SimpleDestinationRule destinationRule = new SimpleDestinationRule(); DestinationSet defaultDestinationSet = new DestinationSet(); Destination destination1 = new Destination(); destination1.Type = DestinationTypes.User; destination1.Value = K2FieldFactory.CreateK2Field("K2:Domain\\User1"); Destination destination2 = new Destination(); destination2.Type = DestinationTypes.User; destination2.Value = K2FieldFactory.CreateK2Field("K2:Domain\\User2"); defaultDestinationSet.Destinations.Add(destination1); defaultDestinationSet.Destinations.Add(destination2); destinationRule.DestinationSets.Add(defaultDestinationSet); // Set the destination rule of the activity awaitApprovalActivity.DestinationRule = destinationRule; // Create the approved email event MailEvent approvedMail = WorkflowFactory.CreateEvent <MailEvent>("Send approved email", WizardNames.MailEvent); // Use string values for the email addresses approvedMail.EventItem.To = K2FieldFactory.CreateK2Field("*****@*****.**"); approvedMail.EventItem.From = K2FieldFactory.CreateK2Field("*****@*****.**"); approvedMail.EventItem.Subject = K2FieldFactory.CreateK2Field("Leave Approved"); approvedMail.EventItem.Body = K2FieldFactory.CreateK2Field("Your leave has been approved."); // Create the declined email event MailEvent declinedMail = WorkflowFactory.CreateEvent <MailEvent>("Send declined email", WizardNames.MailEvent); // Use process data fields for the email addresses declinedMail.EventItem.To = K2FieldFactory.CreateK2Field(toEmailDataField); declinedMail.EventItem.From = K2FieldFactory.CreateK2Field(fromEmailDataField); declinedMail.EventItem.Subject = K2FieldFactory.CreateK2Field("Leave Declined"); declinedMail.EventItem.Body = K2FieldFactory.CreateK2Field("Your leave has been declined."); // Add the events to the activities approvedActivity.Events.Add(approvedMail); declinedActivity.Events.Add(declinedMail); // Link the lines created by the "GenerateDefaultLinesForOutcomes" method to the approved and declined activities process.Lines["Approve"].FinishActivity = approvedActivity; process.Lines["Decline"].FinishActivity = declinedActivity; // Link the start activity with the await approval activity Line startLine = WorkflowFactory.CreateLine("StartLine"); startLine.StartActivity = process.StartActivity; startLine.FinishActivity = awaitApprovalActivity; process.Lines.Add(startLine); // Position the activities and lines WorkflowHelpers.PositionActivity(process.StartActivity, 208, 16); WorkflowHelpers.PositionActivity(awaitApprovalActivity, 208, 112); WorkflowHelpers.PositionActivity(approvedActivity, 32, 224); WorkflowHelpers.PositionActivity(declinedActivity, 368, 224); // FinishLines are the lines that flows out from the activity // when the activity has finished WorkflowHelpers.AutoPositionLines(awaitApprovalActivity.FinishLines); return(process); }
public void DestinationSet_Standardize_WhenNoAreaNeedToBeRemoved() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("SWEDEN", 46); ds.UpdateDestination("SWEDEN-MOBILE 1", "4670-4675"); ds.UpdateDestination("SWEDEN-MOBILE 2", "4676-4678"); ds.Standardize(); Assert.AreEqual<string>("46", ds["SWEDEN"].ToString(), "Sweden destination area codes"); Assert.AreEqual<string>("4670-4675", ds["SWEDEN-MOBILE 1"].ToString(), "Sweden-mobile 1 destination area codes"); Assert.AreEqual<string>("4676-4678", ds["SWEDEN-MOBILE 2"].ToString(), "Sweden-mobile 2 destination area codes"); }
private DefaultActivity CreateCRMActivity(string ActName, DataField dfEntityid, DataField dfEntityName, int x, ref int y) { DefaultActivity actCRMReview = WorkflowFactory.CreateActivity <DefaultActivity>(ActName + " Review", WizardNames.DefaultActivity); process.Activities.Add(actCRMReview); actCRMReview.MetaData = "Generated by K2 for Dynamics CRM 2011 Process Generation Tool"; actCRMReview.ExpectedDuration = 1440; actCRMReview.Priority = 2; actCRMReview.Slots = 1; actCRMReview.Type = ActivityTypes.DestinationInstanceParralel; WorkflowHelpers.PositionActivity(actCRMReview, x, y); y += 100; DesignCRMClient.CRMClientEvent crmClientEvent = WorkflowFactory.CreateEvent <DesignCRMClient.CRMClientEvent>(ActName + " Review", WizardNames.CRMClientEvent); crmClientEvent.EventItem.CRMCustomSNParameter.Parts.Add("k2_sn"); crmClientEvent.EventItem.CRMEntityId.Parts.Add(dfEntityid); crmClientEvent.EventItem.CRMEntityType.Parts.Add(dfEntityName); crmClientEvent.EventItem.CRMFunctionsSmartObject.Parts.Add("K2_CRM_Functions"); crmClientEvent.EventItem.CRMOrganisation.Parts.Add("Denallix"); // Add some destination users SimpleDestinationRule destinationRule = new SimpleDestinationRule(); DestinationSet defaultDestinationSet = new DestinationSet(); Destination destination1 = new Destination(); destination1.Type = DestinationTypes.User; SourceCode.Workflow.Design.WorkflowContextFieldPart fpProcOrigName = new WorkflowContextFieldPart(); fpProcOrigName.WfProps = "ProcessOriginatorName"; fpProcOrigName.WorkflowContextProperty = WorkflowContextProperty.ProcessOriginatorName; destination1.Value = new K2Field(fpProcOrigName); defaultDestinationSet.Destinations.Add(destination1); destinationRule.DestinationSets.Add(defaultDestinationSet); actCRMReview.DestinationRule = destinationRule; destinationRule.ResolveQueuesToUsers = true; crmClientEvent.EventItem.TaskSubject.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ProcessFolio)); crmClientEvent.EventItem.TaskSubject.Parts.Add(" - "); crmClientEvent.EventItem.TaskSubject.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ActivityInstanceName)); crmClientEvent.EventItem.TaskDescription.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ProcessFolio)); crmClientEvent.EventItem.TaskDescription.Parts.Add(" - "); crmClientEvent.EventItem.TaskDescription.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ActivityInstanceName)); crmClientEvent.EventItem.TaskOwnerFQN.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ActivityInstanceDestUserName)); crmClientEvent.EventItem.ProcessName.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ProcessName)); crmClientEvent.EventItem.ActivityName.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ActivityInstanceName)); crmClientEvent.EventItem.TaskCategory.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ProcessName)); crmClientEvent.EventItem.TaskSubcategory.Parts.Add(new WorkflowContextFieldPart(WorkflowContextProperty.ActivityInstanceName)); actCRMReview.SucceedingRule = new DesignCRMClient.CRMClientActivitySucceedingRule(); crmClientEvent.SucceedingRule = new DesignCRMClient.CRMClientEventSucceedingRule(); actCRMReview.Events.Add(crmClientEvent); // Add two actions for the client event EventAction approveAction = WorkflowFactory.CreateK2Object <EventAction>("Approve"); approveAction.ActionItem = new DefaultOutcomeAction(); EventAction declineAction = WorkflowFactory.CreateK2Object <EventAction>("Decline"); declineAction.ActionItem = new DefaultOutcomeAction(); crmClientEvent.Actions.Add(approveAction); crmClientEvent.Actions.Add(declineAction); // Find the default succeeding rule property wizard definition, // and replace it with the default outcome succeeding rule //PropertyWizardDefinition propWizDefSimple = WorkflowHelpers.FindOfType<SimpleSucceedingRulePropertyWizardDefinition>(actCRMReview.WizardDefinition.PropertyWizardDefinitions); //PropertyWizardDefinition propWizDefOutcome = WorkflowHelpers.FindOfType<OutcomeSucceedingRulePropertyWizardDefinition>(actCRMReview.WizardDefinition.PropertyWizardDefinitions); //if (propWizDefSimple != null && propWizDefOutcome == null) //{ // actCRMReview.WizardDefinition.PropertyWizardDefinitions.Remove(propWizDefSimple); // actCRMReview.WizardDefinition.PropertyWizardDefinitions.Add( // WorkflowFactory.CreatePropertyWizardDefinition(PropertyWizardNames.OutcomeSucceedingRule)); //} SourceCode.Workflow.Design.Outcome.Common.GenerateDefaultOutcomesForActions(crmClientEvent); SourceCode.Workflow.Design.Outcome.Common.GenerateDefaultLinesForOutcomes(actCRMReview.SucceedingRule as DesignCRMClient.CRMClientActivitySucceedingRule); SourceCode.Workflow.Design.Outcome.Common.SyncActivityAndEventSucceedingRule(crmClientEvent); return(actCRMReview); }
public void DestinationSet_Dest_CoveredRange() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("a", 33); ds.AddArea("a", 331); ds.AddArea("b", 1); Assert.AreEqual<int>(3, ds.Destinations.Count); Assert.IsTrue(ds.Destinations.ContainsKey("a")); Assert.AreEqual<string>("33,331", ds.Destinations["a"].ToString()); }
public void DestinationSet_Standardize_WithCorrectLongStringMatchingForLastDigitHigherThanFour() { DestinationSet<string> ds = new DestinationSet<string>(); ds.AddArea("ITALY", 39); ds.UpdateDestination("ITALY-MOBILE 1", "3943912, 3943915, 39439129"); ds.UpdateDestination("ITALY-MOBILE 2", "3943913, 3943916, 39439168, 39439159"); ds.Standardize(); Assert.AreEqual<string>("39", ds["ITALY"].ToString(), "Italy destination area codes"); Assert.AreEqual<string>("3943912,3943915", ds["ITALY-MOBILE 1"].ToString(), "Italy-mobile 1 destination area codes"); Assert.AreEqual<string>("3943913,39439159-39439169", ds["ITALY-MOBILE 2"].ToString(), "Italy-mobile 2 destination area codes"); }