public IMaybe <MetadataDefinitionGroupResource> FindByName(string name) { var result = _metaDataDefinitionGroupProjectionRepository.ToQueryable() .FirstOrDefault(a => a.Name == name); return(result == null?MaybeExtensions.ToMaybe <MetadataDefinitionGroupResource>(null) : result.ToMetadataDefinitionGroupResource().ToMaybe()); }
public void Noones_Are_Expected_To_Be_Equal() { var first = MaybeExtensions.None <string>(); var second = MaybeExtensions.None <string>(); Assert.Equal(first, second); Assert.Equal(first, Maybe <string> .None); Assert.Equal(second, Maybe <string> .None); }
public void Test_FirstOrNone() { Assert.That(() => MaybeExtensions.FirstOrNone <int>(null, null), Throws.ArgumentNullException); Assert.That(() => Array.Empty <int>().FirstOrNone(null), Throws.ArgumentNullException); var coll = new[] { 12, 12351, 123, 11, 0, -88 }; Assert.AreEqual(coll[0], coll.FirstOrNone(x => true).Match(int.MinValue)); Assert.That(() => Array.Empty <int>().FirstOrNone(x => false).Match(new IndexOutOfRangeException()), Throws.InstanceOf <IndexOutOfRangeException>()); }
public void Test_ElementAtOrNone() { Assert.That(() => MaybeExtensions.ElementAtOrNone <int>(null, 0), Throws.ArgumentNullException); Assert.That(() => Array.Empty <int>().SelectSome(x => x).ElementAtOrNone(-10), Throws.ArgumentException); var coll = new[] { 12, 12351, 123, 11, 0, -88 }; Assert.AreEqual(coll[3], coll.ElementAtOrNone(3).Match(int.MinValue)); Assert.That(() => coll.ElementAtOrNone(6).Match(new IndexOutOfRangeException()), Throws.InstanceOf <IndexOutOfRangeException>()); }
private static IEnumerable <Token> PartitionSequences( IEnumerable <Token> tokens, Func <string, Maybe <Tuple <DescriptorType, Maybe <int> > > > typeLookup) { return(from tseq in tokens.Pairwise( (f, s) => f.IsName() && s.IsValue() ? typeLookup(f.Text).Return(info => info.Item1 == DescriptorType.Sequence ? new[] { f }.Concat(tokens.SkipWhile(t => t.Equals(f)).TakeWhile(v => v.IsValue()).Take(MaybeExtensions.Return(info.Item2, items => items, 0))) : new Token[] { }, new Token[] { }) : new Token[] {}) from t in tseq select t); }