Esempio n. 1
0
        public void ToPredicateWithNullSender()
        {
            var e = Assert.Throws <ArgumentNullException>(() =>
                                                          FuncExtensions.ToPredicate <object>(null));

            Assert.Equal("predicate", e.ParamName);
        }
Esempio n. 2
0
 /// <summary>
 /// Enumerates visible instance fields of given object.
 /// </summary>
 /// <param name="instance">Object which fields will be enumerated.</param>
 /// <param name="caller">Current class context for field visibility check.</param>
 /// <returns>Enumeration of fields and their values, including runtime fields.</returns>
 public static IEnumerable <KeyValuePair <IntStringKey, PhpValue> > EnumerateVisibleInstanceFields(object instance, RuntimeTypeHandle caller = default)
 {
     return(EnumerateInstanceFields(instance,
                                    (p) => new IntStringKey(p.PropertyName),
                                    FuncExtensions.Identity <IntStringKey>(),
                                    (m) => m.IsVisible(caller)));
 }
Esempio n. 3
0
 /// <summary>
 /// Enumerates visible instance fields of given object.
 /// </summary>
 /// <param name="instance">Object which fields will be enumerated.</param>
 /// <param name="caller">Current class context for field visibility check.</param>
 /// <returns>Enumeration of fields and their values, including runtime fields.</returns>
 public static IEnumerable <KeyValuePair <IntStringKey, PhpValue> > EnumerateVisibleInstanceFields(object instance, RuntimeTypeHandle caller = default)
 {
     return(EnumerateInstanceFields(instance,
                                    (f, d) => new IntStringKey(f.Name),
                                    FuncExtensions.Identity <IntStringKey>(),
                                    (m) => s_notInternalFieldsPredicate(m) && IsVisible(m, caller)));
 }
Esempio n. 4
0
        public void ToConverterFailsWithNullSender()
        {
            var e = Assert.Throws <ArgumentNullException>(() =>
                                                          FuncExtensions.ToConverter <object, object>(null));

            Assert.Equal("converter", e.ParamName);
        }
Esempio n. 5
0
        private void OnItemAdd(object item)
        => _logger.OnSingleEntryCall <Component>(() =>
        {
            var appointment = item as Outlook.AppointmentItem;
            if (appointment == null)
            {
                return;
            }
            if (appointment.SafeCheck(_ => _.ResponseStatus != Outlook.OlResponseStatus.olResponseAccepted, true))
            {
                return;
            }

            using (var rootFolder = CWExt.AsCW((Outlook.Folder)appointment.Parent))
                if (!rootFolder.Ref.FolderPath.StartsWith(@"\\"))
                {
                    return;
                }

            var window         = new CalendarsAndCategoriesWindow();
            window.DataContext = new CalendarsAndCategoriesModel(
                _env,
                FuncExtensions
                .ApplyParams <CalendarsAndCategoriesModel, Outlook.AppointmentItem>(OnApply, appointment)
                .IfTrueThenCloseWindow(window),
                FuncExtensions
                .AlwaysTrue <CalendarsAndCategoriesModel>()
                .IfTrueThenCloseWindow(window)
                );
            window.Title = Resources.OnAddAppointmentHandler_Caption;
            window.ShowDialog(_logger);
        });
Esempio n. 6
0
        public void ConvertFunc()
        {
            var src  = new Func <object, int>(x => ((int)x) * 2);
            var dest = FuncExtensions.Convert <object, int, int>(src);
            var f    = dest.ShouldBeOfType <Func <int, int> >();

            f(2).ShouldBe(4);
        }
Esempio n. 7
0
        private void InitializeHeaders()
        {
            //Reference:
            //  B : SL No
            //  C : Changeset Id
            //  D : Commiter
            //  E : Check in Date
            //  F : Comment
            //  G : WorkItem Ids

            _xRange = _xlWorkSheet.Range["B:B", Type.Missing];
            _xRange.Columns.ColumnWidth = 10;
            _xRange.Columns.Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

            _xRange = _xlWorkSheet.Range["C:C", Type.Missing];
            _xRange.Columns.ColumnWidth = 15;
            _xRange.Columns.Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

            _xRange = _xlWorkSheet.Range["D:D", Type.Missing];
            _xRange.Columns.ColumnWidth = 25;

            _xRange = _xlWorkSheet.Range["E:E", Type.Missing];
            _xRange.Columns.ColumnWidth = 40;

            _xRange = _xlWorkSheet.Range["F:F", Type.Missing];
            _xRange.Columns.ColumnWidth = 100;
            _xRange.Columns.WrapText    = true;

            _xRange = _xlWorkSheet.Range["G:G", Type.Missing];
            _xRange.Columns.ColumnWidth = 15;
            _xRange.Columns.Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

            var includeCol = FuncExtensions.Create((string col) => string.Format("{0}{1}", col, HeaderRow));

            var headerColumns = new[] { includeCol("B"), includeCol("C"), includeCol("D"), includeCol("E"), includeCol("F"), includeCol("G") };

            var applyFormatToHeader = ActionExtensions.Create((string col) =>
            {
                _xRange = _xlWorkSheet.Range[col, Type.Missing];
                if (_xRange == null)
                {
                    return;
                }
                _xRange.Font.Color     = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
                _xRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
            });

            headerColumns.Iterate(applyFormatToHeader);

            _xlWorkSheet.Cells[HeaderRow, 2] = "SL No";
            _xlWorkSheet.Cells[HeaderRow, 3] = "Id";
            _xlWorkSheet.Cells[HeaderRow, 4] = "Committer";
            _xlWorkSheet.Cells[HeaderRow, 5] = "Check-in Date";
            _xlWorkSheet.Cells[HeaderRow, 6] = "Comment";
            _xlWorkSheet.Cells[HeaderRow, 7] = "Work Item Ids";
        }
Esempio n. 8
0
        public void ConvertExpression()
        {
            Func <object, int> src = x => ((int)x) * 2;
            Expression <Func <object, int> > srcExp = y => src(y);

            var dest = FuncExtensions.Convert <object, int, int>(srcExp);
            var f    = dest.Compile();

            f(2).ShouldBe(4);
        }
Esempio n. 9
0
        public void TestApplicative(string foo, int bar, bool?fooBar, bool expected)
        {
            var dto = ValidateString(foo)
                      .Select(FuncExtensions.Curry <string, int, bool, Dto>(Dto.Apply))
                      .Apply(ValidateInt(bar))
                      .Apply(ValidateBool(fooBar));

            Assert.AreEqual(expected, dto.Match(
                                left: error => false,
                                right: val => true));
        }
        public void TestTraverseMaybe(int[] testData, bool isSome, int[] expected)
        {
            Func <int, bool> greaterThanFour = i => i > 4;
            var keepGreaterThanFour          = FuncExtensions.Curry <Func <int, bool>, int, IMaybe <int> >(KeepIf)(greaterThanFour);
            var result = testData.Traverse(keepGreaterThanFour);

            Assert.AreEqual(isSome, !result.IsEmpty);
            if (isSome)
            {
                result.Match(
                    just: actual => Io.Apply(() => Assert.AreEqual(expected, actual)),
                    nothing: () => Io.Apply(() => Assert.Fail("Expected to get a result for input {0} but got nothing instead", testData))).UnsafePerformIo();
            }
        }
Esempio n. 11
0
        public void Execute()
        {
            var window = new CalendarsWindow();

            window.Title       = Resources.SetDefaultCalendars_Caption;
            window.DataContext = new CalendarsModel(
                _env,
                FuncExtensions
                .IfTrueThenCloseWindow <CalendarsModel>(OnApply, window),
                FuncExtensions
                .AlwaysTrue <CalendarsModel>()
                .IfTrueThenCloseWindow(window)
                );
            window.ShowDialog(_logger);
        }
Esempio n. 12
0
        public void AndAlso_NotConcatingNull()
        {
            var records = new[]
            {
                new MyClass {
                    Id = "1", Value = 1, Name = "name-1"
                },
                new MyClass {
                    Id = "2", Value = 2
                },
                new MyClass {
                    Id = "3", Value = 3, Name = "name-3"
                },
            };
            var func1 = new Func <MyClass, bool>(x => x.Id != null);
            var func3 = new Func <MyClass, bool>(x => x.Name != null);
            var f     = FuncExtensions.AndAlso(func1, func3);

            var res = records.Where(f);

            res.Count().ShouldBe(2);
            res.ShouldAllBe(x => new[] { records[0], records[2] }.Contains(x));
        }
Esempio n. 13
0
        public void AndAlso_MultipleResult()
        {
            var records = new[]
            {
                new MyClass {
                    Id = "1", Value = 1, Name = "name-1"
                },
                new MyClass {
                    Id = "2", Value = 2, Name = "name-2"
                },
                new MyClass {
                    Id = "3", Value = 3, Name = "name-3"
                },
            };
            var func1 = new Func <MyClass, bool>(x => x.Id != null);
            var func2 = new Func <MyClass, bool>(x => x.Value > 0);
            var func3 = new Func <MyClass, bool>(x => x.Name != null);
            var f     = FuncExtensions.AndAlso(func1, func2, func3);
            var res   = records.Where(f);

            res.Count().ShouldBe(records.Length);
            res.ShouldAllBe(x => records.Contains(x));
        }
Esempio n. 14
0
        public static DnsResourceData NextDnsResourceData(this Random random, DnsType type)
        {
            switch (type)
            {
            case DnsType.A:
                return(new DnsResourceDataIpV4(random.NextIpV4Address()));

            case DnsType.Ns:
            case DnsType.Md:
            case DnsType.MailForwarder:
            case DnsType.CName:
            case DnsType.Mailbox:
            case DnsType.MailGroup:
            case DnsType.MailRename:
            case DnsType.Ptr:
            case DnsType.NetworkServiceAccessPointPointer:
            case DnsType.DName:
                return(new DnsResourceDataDomainName(random.NextDnsDomainName()));

            case DnsType.StartOfAuthority:
                return(new DnsResourceDataStartOfAuthority(random.NextDnsDomainName(), random.NextDnsDomainName(),
                                                           random.NextUInt(), random.NextUInt(), random.NextUInt(), random.NextUInt(), random.NextUInt()));

            case DnsType.Null:
                return(new DnsResourceDataAnything(random.NextDataSegment(random.Next(65536))));

            case DnsType.Wks:
                return(new DnsResourceDataWellKnownService(random.NextIpV4Address(), random.NextEnum <IpV4Protocol>(),
                                                           random.NextDataSegment(random.Next(10))));

            case DnsType.HInfo:
                return(new DnsResourceDataHostInformation(random.NextDataSegment(random.Next(10)), random.NextDataSegment(random.Next(10))));

            case DnsType.MInfo:
                return(new DnsResourceDataMailingListInfo(random.NextDnsDomainName(), random.NextDnsDomainName()));

            case DnsType.MailExchange:
                return(new DnsResourceDataMailExchange(random.NextUShort(), random.NextDnsDomainName()));

            case DnsType.Txt:
            case DnsType.Spf:
                return(new DnsResourceDataText(((Func <DataSegment>)(() => random.NextDataSegment(random.Next(10)))).GenerateArray(10).AsReadOnly()));

            case DnsType.ResponsiblePerson:
                return(new DnsResourceDataResponsiblePerson(random.NextDnsDomainName(), random.NextDnsDomainName()));

            case DnsType.AfsDatabase:
                return(new DnsResourceDataAfsDatabase(random.NextEnum <DnsAfsDatabaseSubtype>(), random.NextDnsDomainName()));

            case DnsType.X25:
                return(new DnsResourceDataString(random.NextDataSegment(random.Next(10))));

            case DnsType.Isdn:
                return(random.NextBool()
                               ? new DnsResourceDataIsdn(random.NextDataSegment(random.Next(10)))
                               : new DnsResourceDataIsdn(random.NextDataSegment(random.Next(10)), random.NextDataSegment(random.Next(10))));

            case DnsType.RouteThrough:
                return(new DnsResourceDataRouteThrough(random.NextUShort(), random.NextDnsDomainName()));

            case DnsType.NetworkServiceAccessPoint:
                return(new DnsResourceDataNetworkServiceAccessPoint(random.NextDataSegment(1 + random.Next(10)), random.NextUInt48(), random.NextByte()));

            case DnsType.Signature:
            case DnsType.ResourceRecordSignature:
                return(new DnsResourceDataSignature(random.NextEnum <DnsType>(), random.NextEnum <DnsAlgorithm>(), random.NextByte(), random.NextUInt(),
                                                    random.NextUInt(), random.NextUInt(), random.NextUShort(), random.NextDnsDomainName(),
                                                    random.NextDataSegment(random.Next(100))));

            case DnsType.Key:
                return(new DnsResourceDataKey(random.NextBool(), random.NextBool(), random.NextBool(), random.NextBool(), random.NextBool(),
                                              random.NextBool(), random.NextEnum <DnsKeyNameType>(), random.NextFlags <DnsKeySignatoryAttributes>(),
                                              random.NextEnum <DnsKeyProtocol>(), random.NextEnum <DnsAlgorithm>(),
                                              random.NextBool() ? (ushort?)random.NextUShort() : null, random.NextDataSegment(random.Next(100))));

            case DnsType.PointerX400:
                return(new DnsResourceDataX400Pointer(random.NextUShort(), random.NextDnsDomainName(), random.NextDnsDomainName()));

            case DnsType.GPos:
                return(new DnsResourceDataGeographicalPosition((random.NextInt(-90, 90) * random.NextDouble()).ToString("0.##########"),
                                                               (random.NextInt(-180, 180) * random.NextDouble()).ToString("0.##########"),
                                                               (random.NextInt(-500, 50000) * random.NextDouble()).ToString("0.##########")));

            case DnsType.Aaaa:
                return(new DnsResourceDataIpV6(random.NextIpV6Address()));

            case DnsType.Loc:
                return(new DnsResourceDataLocationInformation(random.NextByte(),
                                                              (ulong)(random.NextInt(0, 10) * Math.Pow(10, random.NextInt(0, 10))),
                                                              (ulong)(random.NextInt(0, 10) * Math.Pow(10, random.NextInt(0, 10))),
                                                              (ulong)(random.NextInt(0, 10) * Math.Pow(10, random.NextInt(0, 10))),
                                                              random.NextUInt(), random.NextUInt(), random.NextUInt()));

            case DnsType.NextDomain:
                byte[] typeBitmap = random.NextBytes(random.Next(DnsResourceDataNextDomain.MaxTypeBitmapLength + 1));
                if (typeBitmap.Length > 0 && typeBitmap[typeBitmap.Length - 1] == 0)
                {
                    typeBitmap[typeBitmap.Length - 1] = random.NextByte(1, 256);
                }
                return(new DnsResourceDataNextDomain(random.NextDnsDomainName(), new DataSegment(typeBitmap)));

            case DnsType.EId:
            case DnsType.NimrodLocator:
            case DnsType.DynamicHostConfigurationId:
                return(new DnsResourceDataAnything(random.NextDataSegment(random.Next(32))));

            case DnsType.ServerSelection:
                return(new DnsResourceDataServerSelection(random.NextUShort(), random.NextUShort(), random.NextUShort(), random.NextDnsDomainName()));

            case DnsType.AtmA:
                return(new DnsResourceDataAtmAddress(random.NextEnum <DnsAtmAddressFormat>(), random.NextDataSegment(random.Next(100))));

            case DnsType.NaPtr:
                IEnumerable <byte> possibleFlags =
                    Enumerable.Range('0', '9' - '0' + 1).Concat(Enumerable.Range('a', 'z' - 'a' + 1)).Concat(Enumerable.Range('A', 'Z' - 'A' + 1)).Select(value => (byte)value);
                return(new DnsResourceDataNamingAuthorityPointer(
                           random.NextUShort(), random.NextUShort(),
                           new DataSegment(FuncExtensions.GenerateArray(() => random.NextValue(possibleFlags.ToArray()), 10)),
                           random.NextDataSegment(random.Next(100)), random.NextDataSegment(random.Next(100)),
                           random.NextDnsDomainName()));

            case DnsType.KeyExchanger:
                return(new DnsResourceDataKeyExchanger(random.NextUShort(), random.NextDnsDomainName()));

            case DnsType.Cert:
                return(new DnsResourceDataCertificate(random.NextEnum <DnsCertificateType>(), random.NextUShort(), random.NextEnum <DnsAlgorithm>(),
                                                      random.NextDataSegment(random.Next(100))));

            case DnsType.A6:
                byte    prefixLength       = random.NextByte(DnsResourceDataA6.MaxPrefixLength + 1);
                UInt128 addressSuffixValue = random.NextUInt128() >> prefixLength;
                if (prefixLength < DnsResourceDataA6.MaxPrefixLength)
                {
                    addressSuffixValue = (addressSuffixValue >> 1) + (UInt128.One << (127 - prefixLength));
                }
                return(new DnsResourceDataA6(prefixLength,
                                             new IpV6Address(addressSuffixValue),
                                             random.NextDnsDomainName()));

            case DnsType.Sink:
                return(new DnsResourceDataSink(random.NextEnum <DnsSinkCoding>(), random.NextByte(), random.NextDataSegment(random.Next(100))));

            case DnsType.Opt:
                return(new DnsResourceDataOptions(random.NextDnsOptions()));

            case DnsType.Apl:
                return(new DnsResourceDataAddressPrefixList(
                           ((Func <DnsAddressPrefix>)
                                (() =>
                                new DnsAddressPrefix(random.NextEnum <AddressFamily>(), random.NextByte(), random.NextBool(),
                                                     random.NextDataSegment(random.Next(0, 128))))).GenerateArray(random.Next(10))));

            case DnsType.DelegationSigner:
            case DnsType.Cds:
            case DnsType.TrustAnchor:
            case DnsType.DnsSecLookAsideValidation:
                return(new DnsResourceDataDelegationSigner(random.NextUShort(), random.NextEnum <DnsAlgorithm>(), random.NextEnum <DnsDigestType>(),
                                                           random.NextDataSegment(random.Next(50))));

            case DnsType.SshFingerprint:
                return(new DnsResourceDataSshFingerprint(random.NextEnum <DnsFingerprintPublicKeyAlgorithm>(), random.NextEnum <DnsFingerprintType>(),
                                                         random.NextDataSegment(random.Next(20))));

            case DnsType.IpSecKey:
                return(new DnsResourceDataIpSecKey(random.NextByte(), random.NextDnsGateway(), random.NextEnum <DnsPublicKeyAlgorithm>(),
                                                   random.NextDataSegment(random.Next(100))));

            case DnsType.NSec:
                return(new DnsResourceDataNextDomainSecure(random.NextDnsDomainName(), random.NextDnsTypeArray(random.Next(100))));

            case DnsType.DnsKey:
                return(new DnsResourceDataDnsKey(random.NextBool(), random.NextBool(), random.NextBool(), random.NextByte(), random.NextEnum <DnsAlgorithm>(),
                                                 random.NextDataSegment(random.Next(100))));

            case DnsType.NSec3:
                return(new DnsResourceDataNextDomainSecure3(random.NextEnum <DnsSecNSec3HashAlgorithm>(), random.NextFlags <DnsSecNSec3Flags>(),
                                                            random.NextUShort(), random.NextDataSegment(random.Next(10)), random.NextDataSegment(10),
                                                            random.NextDnsTypeArray(random.Next(100))));

            case DnsType.NSec3Parameters:
                return(new DnsResourceDataNextDomainSecure3Parameters(random.NextEnum <DnsSecNSec3HashAlgorithm>(), random.NextFlags <DnsSecNSec3Flags>(),
                                                                      random.NextUShort(), random.NextDataSegment(random.Next(10))));

            case DnsType.Hip:
                return(new DnsResourceDataHostIdentityProtocol(random.NextDataSegment(random.NextInt(0, 100)), random.NextEnum <DnsPublicKeyAlgorithm>(),
                                                               random.NextDataSegment(random.NextInt(0, 100)),
                                                               ((Func <DnsDomainName>)(() => random.NextDnsDomainName())).GenerateArray(random.NextInt(0, 10))));

            case DnsType.NInfo:
                return(new DnsResourceDataNInfo(((Func <DataSegment>)(() => random.NextDataSegment(random.NextInt(1, 10)))).GenerateArray(10).AsReadOnly()));

            case DnsType.RKey:
                return(new DnsResourceDataRKey(random.NextUShort(), random.NextByte(), random.NextEnum <DnsAlgorithm>(), random.NextDataSegment(random.NextInt(0, 100))));

            case DnsType.TrustAnchorLink:
                return(new DnsResourceDataTrustAnchorLink(random.NextDnsDomainName(), random.NextDnsDomainName()));

            case DnsType.TKey:
                return(new DnsResourceDataTransactionKey(random.NextDnsDomainName(), random.NextUInt(), random.NextUInt(),
                                                         random.NextEnum <DnsTransactionKeyMode>(), random.NextEnum <DnsResponseCode>(),
                                                         random.NextDataSegment(random.NextInt(0, 100)), random.NextDataSegment(random.NextInt(0, 100))));

            case DnsType.TransactionSignature:
                return(new DnsResourceDataTransactionSignature(random.NextDnsDomainName(), random.NextUInt48(), random.NextUShort(),
                                                               random.NextDataSegment(random.NextInt(0, 100)), random.NextUShort(),
                                                               random.NextEnum <DnsResponseCode>(), random.NextDataSegment(random.NextInt(0, 100))));

            case DnsType.Uri:
                return(new DnsResourceDataUri(random.NextUShort(), random.NextUShort(),
                                              ((Func <DataSegment>)(() => random.NextDataSegment(random.NextInt(0, 100)))).GenerateArray(random.NextInt(0, 10))));

            case DnsType.CertificationAuthorityAuthorization:
                return(new DnsResourceDataCertificationAuthorityAuthorization(random.NextFlags <DnsCertificationAuthorityAuthorizationFlags>(),
                                                                              random.NextDataSegment(random.NextInt(0, 16)),
                                                                              random.NextDataSegment(random.NextInt(0, 100))));

            default:
                return(new DnsResourceDataAnything(random.NextDataSegment(random.Next(100))));
            }
        }
 public void GenerateArrayNullTest()
 {
     Assert.IsNotNull(FuncExtensions.GenerateArray <int>(null, 100));
     Assert.Fail();
 }