public void ToPredicateWithNullSender() { var e = Assert.Throws <ArgumentNullException>(() => FuncExtensions.ToPredicate <object>(null)); Assert.Equal("predicate", e.ParamName); }
/// <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))); }
/// <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))); }
public void ToConverterFailsWithNullSender() { var e = Assert.Throws <ArgumentNullException>(() => FuncExtensions.ToConverter <object, object>(null)); Assert.Equal("converter", e.ParamName); }
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); });
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); }
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"; }
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); }
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(); } }
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); }
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)); }
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)); }
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(); }