/// <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());
 }
Example #28
0
        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");
        }