public static AstLiteralNumeric Create(NumberContext context) { return(new AstLiteralNumeric(context) { Value = GetNumberValue(context) }); }
public void EntityHierarchyShouldBeInserted() { using (var db = new NumberContext()) { var now = DateTime.Now; var parities = new[] { new Parity { Name = "Even", UpdatedAt = now, UpdatedBy = "Måns" }, new Parity { Name = "Odd", UpdatedAt = now, UpdatedBy = "Måns" }, }; var numbers = GenerateNumbers(1, 100, parities[0], parities[1], now).ToArray(); var primes = GeneratePrimeNumbers(100, numbers, now); var request = new BulkInsertRequest <Prime> { Entities = primes, Recursive = true, }; db.BulkInsertAll(request); } }
public void OneToManyWhereAllIsNew() { using (var db = new NumberContext()) { var now = DateTime.Now; var numbers = GenerateNumbers(1, 100, now).ToArray(); var request = new BulkInsertRequest <Number> { Entities = numbers, EnableRecursiveInsert = EnableRecursiveInsert.Yes, }; db.BulkInsertAll(request); Assert.AreEqual(100, db.Numbers.Count()); var dbNumbers = db.Numbers.Include(n => n.Parity).ToArray(); foreach (var number in dbNumbers.Where(n => n.Value % 2 == 0)) { Assert.AreEqual("Even", number.Parity.Name); Assert.AreEqual(now.ToString("yyyyMMddHHmmss"), number.UpdatedAt.ToString("yyyyMMddHHmmss")); } foreach (var number in dbNumbers.Where(n => n.Value % 2 != 0)) { Assert.AreEqual("Odd", number.Parity.Name); Assert.AreEqual(now.ToString("yyyyMMddHHmmss"), number.UpdatedAt.ToString("yyyyMMddHHmmss")); } } }
public void OneToManyWhereTheOneAlreadyExists() { using (var db = new NumberContext()) { var now = DateTime.Now; Parity even = new Parity { Name = "Even", UpdatedAt = now, UpdatedBy = "Måns" }; Parity odd = new Parity { Name = "Odd", UpdatedAt = now, UpdatedBy = "Måns" }; db.BulkInsertAll(new[] { even, odd }); var numbers = GenerateNumbers(1, 100, even, odd, now).ToArray(); db.BulkInsertAll(numbers); Assert.AreEqual(100, db.Numbers.Count()); var dbNumbers = db.Numbers.Include(n => n.Parity).ToArray(); foreach (var number in dbNumbers.Where(n => n.Value % 2 == 0)) { Assert.AreEqual("Even", number.Parity.Name); Assert.AreEqual(now.ToString("yyyyMMddHHmmss"), number.UpdatedAt.ToString("yyyyMMddHHmmss")); } foreach (var number in dbNumbers.Where(n => n.Value % 2 != 0)) { Assert.AreEqual("Odd", number.Parity.Name); Assert.AreEqual(now.ToString("yyyyMMddHHmmss"), number.UpdatedAt.ToString("yyyyMMddHHmmss")); } } }
public void EntitiesOfSameTypeMatchingExistingEntitiesShouldBeSelected() { using (var db = new NumberContext()) { var now = DateTime.Now; var numbers = GenerateNumbers(1, 200, now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); numbers = GenerateNumbers(50, 100, now).ToArray(); var existingNumbers = db.BulkSelectExisting <Number, Number>(new BulkSelectRequest <Number> { Items = numbers, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Value", EntityPropertyName = "Value" }, } }); for (int i = 0; i < 100; i++) { Assert.AreSame(numbers[i], existingNumbers[i]); } } }
public override void EnterNumber([NotNull] NumberContext context) { Double.TryParse(context.GetText(), out double d); var e = CreateElementOnStack <Number>().Initialize(d); GiveChildToParent(e); }
public void ExistingEntitiesShouldBeSelectedUsingRuntimeTypes() { using (var db = new NumberContext()) { var now = DateTime.Now; // Save 200 numbers (1 to 200) to the database. var numbers = GenerateNumbers(1, 200, now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); // Create a list of 100 numbers with values 151 to 250 numbers = GenerateNumbers(151, 100, now).ToArray(); // Numbers 151 to 200 out of 151 to 250 should be selected. var request = typeof(BulkSelectRequest <>).MakeGenericType(typeof(Number)); var r = Activator.CreateInstance(request, new[] { "Value" }, numbers.ToList(), null); Type ex = typeof(DbContextExtensions); MethodInfo mi = ex.GetMethod("BulkSelectExisting"); MethodInfo miGeneric = mi.MakeGenericMethod(new[] { typeof(Number), typeof(Number) }); object[] args = { db, r }; var existingNumbers = (List <Number>)miGeneric.Invoke(null, args); Assert.AreEqual(50, existingNumbers.Count); for (int i = 0; i < 50; i++) { Assert.AreSame(numbers[i], existingNumbers[i]); } } }
public void ComplexTypesShouldBeInserted() { using (var db = new NumberContext()) { // The level entities are used to test EF complex types. var expectedLevels = new[] { new Level1 { Level2 = new Level2 { Level2Name = "L2", Level3 = new Level3 { Level3Name = "L3", Updated = new DateTime(2018, 1, 1) } } } }; db.BulkInsertAll(expectedLevels); var actualLevels = db.Levels.ToArray(); Assert.AreEqual(expectedLevels.Length, actualLevels.Length); Assert.AreEqual(expectedLevels[0].Id, actualLevels[0].Id); Assert.AreEqual(expectedLevels[0].Level2.Level2Name, actualLevels[0].Level2.Level2Name); Assert.AreEqual(expectedLevels[0].Level2.Level3.Level3Name, actualLevels[0].Level2.Level3.Level3Name); Assert.AreEqual(expectedLevels[0].Level2.Level3.Updated.Ticks, actualLevels[0].Level2.Level3.Updated.Ticks); } }
public void EntityHierarchyShouldBeInserted() { using (var db = new NumberContext()) { var now = DateTime.Now; var numbers = GenerateNumbers(1, 10, now).ToArray(); // 1-10 var primes = GeneratePrimeNumbers(10, numbers, now); // 1,2,3,5,7 var request = new BulkInsertRequest <Prime> { Entities = primes, Recursive = true, }; db.BulkInsertAll(request); var actualNumbers = db.Numbers.ToArray(); var actualPrimes = db.Primes.ToArray(); Assert.AreEqual(5, actualNumbers.Length); Assert.AreEqual(5, actualPrimes.Length); Assert.AreEqual(1, actualPrimes[0].Number.Value); Assert.AreEqual(2, actualPrimes[1].Number.Value); Assert.AreEqual(3, actualPrimes[2].Number.Value); Assert.AreEqual(5, actualPrimes[3].Number.Value); Assert.AreEqual(7, actualPrimes[4].Number.Value); } }
public NumberContext number() { NumberContext _localctx = new NumberContext(Context, State); EnterRule(_localctx, 18, RULE_number); int _la; try { EnterOuterAlt(_localctx, 1); { State = 68; ErrorHandler.Sync(this); _la = TokenStream.LA(1); do { { { State = 67; Match(DIGIT); } } State = 70; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } while (_la == DIGIT); State = 78; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la == T__7) { { State = 72; Match(T__7); State = 74; ErrorHandler.Sync(this); _la = TokenStream.LA(1); do { { { State = 73; Match(DIGIT); } } State = 76; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } while (_la == DIGIT); } } } } catch (RecognitionException re) { _localctx.exception = re; ErrorHandler.ReportError(this, re); ErrorHandler.Recover(this, re); } finally { ExitRule(); } return(_localctx); }
public IndexModel(ILogger <IndexModel> logger, NumberContext context, UserManager <FizzBuzzUser> UserManager, SignInManager <FizzBuzzUser> SignInManager) { _logger = logger; _context = context; _userManager = UserManager; _signInManager = SignInManager; }
protected void CleanupNumberContext() { var db = new NumberContext(); db.Composites.RemoveRange(db.Composites.ToArray()); db.Primes.RemoveRange(db.Primes.ToArray()); db.Numbers.RemoveRange(db.Numbers.ToArray()); db.Parities.RemoveRange(db.Parities.ToArray()); db.SaveChanges(); }
private static ulong GetNumberValue(NumberContext context) { string txt; var bin = context.NUMBERbin(); if (bin is not null) { txt = bin.GetText(); return(ParseNumber(2, 2, txt)); } var oct = context.NUMBERoct(); if (oct is not null) { txt = oct.GetText(); return(ParseNumber(2, 8, txt)); } var dec = context.NUMBERdec(); if (dec is not null) { txt = dec.GetText(); return(ParseNumber(0, 10, txt)); } var decPre = context.NUMBERdec_prefix(); if (decPre is not null) { txt = decPre.GetText(); return(ParseNumber(2, 10, txt)); } var hex = context.NUMBERhex(); if (hex is not null) { txt = hex.GetText(); return(ParseNumber(2, 16, txt)); } var ch = context.CHARACTER(); if (ch is not null) { txt = ch.GetText(); return((UInt64)txt[0]); } return(0); }
public void Cleanup() { var db = new NumberContext(); db.Composites.RemoveRange(db.Composites.ToArray()); db.Primes.RemoveRange(db.Primes.ToArray()); db.Numbers.RemoveRange(db.Numbers.ToArray()); db.Parities.RemoveRange(db.Parities.ToArray()); db.Levels.RemoveRange(db.Levels.ToArray()); db.SaveChanges(); }
public override LiteralNode VisitNumber([NotNull] NumberContext context) { var doub = context.Double(); var txt = context.GetText(); IType typ = new IntType(); if (doub != null) { typ = new DoubleType(); } return(new LiteralNode(context.GetText(), typ, GetLocation(context))); }
public void ExistingEntitiesShouldBeSelectedOnSingleKey() { using (var db = new NumberContext()) { var now = DateTime.Now; var parities = new[] { new Parity { Name = "Even", UpdatedAt = now, UpdatedBy = "Måns" }, new Parity { Name = "Odd", UpdatedAt = now, UpdatedBy = "Måns" }, }; var numbers = GenerateNumbers(1, 200, parities[0], parities[1], now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); var nums = GenerateNumbers(50, 100, parities[0], parities[1], now) .Select(n => new Num { Val = n.Value }) .ToList(); var existingNumbers = db.BulkSelect <Num, Number>(new BulkSelectRequest <Num> { Items = nums, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Val", EntityPropertyName = "Value" }, } }); var expectedNumbers = numbers.Skip(49).Take(100).ToArray(); for (int i = 0; i < 100; i++) { Assert.AreEqual(expectedNumbers[i].Id, existingNumbers[i].Id); Assert.AreEqual(expectedNumbers[i].ParityId, existingNumbers[i].ParityId); Assert.AreEqual(expectedNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture), existingNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(expectedNumbers[i].UpdatedBy, existingNumbers[i].UpdatedBy); Assert.AreEqual(expectedNumbers[i].Value, existingNumbers[i].Value); } } }
public void PrintRelationships_ValidType_ReturnsSpecificMethod() { // arrange var context = new NumberContext(); try { // act context.PrintRelationships(5, CriteriaType.Buzz); } catch (Exception ex) { Assert.Fail("This should never throw exceptions: ", ex); } }
public void NumberContextShouldHaveSomeSeedData_WhenIntialized() { // Arrange using (var context = new NumberContext(SqlLiteMemoryContextOptions())) { context.Database.EnsureCreated(); // Act context.Initialize(); var result = context.Numbers; // Assert result.Should().HaveCountGreaterThan(1); } }
public void ExistingEntitiesShouldBeSelectedOnSingleKey() { using (var db = new NumberContext()) { var now = DateTime.Now; // Save 200 numbers (1 to 200) to the database. var numbers = GenerateNumbers(1, 200, now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, EnableRecursiveInsert = EnableRecursiveInsert.Yes }); // Create a list of 100 numbers with values 151 to 250 var nums = GenerateNumbers(151, 100, now) .Select(n => new Num { Val = n.Value }) .ToList(); // Numbers 151 to 200 from the database should be selected. var existingNumbers = db.BulkSelect <Num, Number>(new BulkSelectRequest <Num> { Items = nums.ToArray(), KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Val", EntityPropertyName = "Value" }, } }).ToArray(); Assert.AreEqual(existingNumbers.Length, 50); var expectedNumbers = numbers.Skip(150).Take(50).ToArray(); for (int i = 0; i < 50; i++) { Assert.AreEqual(expectedNumbers[i].Id, existingNumbers[i].Id); Assert.AreEqual(expectedNumbers[i].ParityId, existingNumbers[i].ParityId); Assert.AreEqual(expectedNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture), existingNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(expectedNumbers[i].UpdatedBy, existingNumbers[i].UpdatedBy); Assert.AreEqual(expectedNumbers[i].Value, existingNumbers[i].Value); } } }
public void NonExistingEntitiesWithDifferentColumnNameShouldBeSelected() { using (var db = new NumberContext()) { // Save 200 numbers (1 to 200) to the database. var firstParity = new Parity() { Name = "Parity#1", UpdatedAt = DateTime.Now, UpdatedBy = "Me" }; var secondParity = new Parity() { Name = "Parity#2", UpdatedAt = DateTime.Now, UpdatedBy = "Me" }; db.BulkInsertAll(new BulkInsertRequest <Parity> { Entities = new List <Parity> { firstParity, secondParity }, EnableRecursiveInsert = EnableRecursiveInsert.Yes }); var thirdParyity = new Parity() { Name = "Parity#3", UpdatedAt = DateTime.Now, UpdatedBy = "Me" }; var parities = new List <Parity>(); parities.AddRange(db.Parities.ToArray()); parities.Add(thirdParyity); List <Parity> nonExistingParity = db.BulkSelectNotExisting <Parity, Parity>(new BulkSelectRequest <Parity>() { Items = new List <Parity> { firstParity, secondParity, thirdParyity }, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Id", EntityPropertyName = "Id" }, } }).ToList(); Assert.AreEqual(1, nonExistingParity.Count); } }
public void ItemsMatchingExistingEntitiesShouldBeSelected() { using (var db = new NumberContext()) { var now = DateTime.Now; var parities = new[] { new Parity { Name = "Even", UpdatedAt = now, UpdatedBy = "Måns" }, new Parity { Name = "Odd", UpdatedAt = now, UpdatedBy = "Måns" }, }; var numbers = GenerateNumbers(1, 200, parities[0], parities[1], now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); var nums = GenerateNumbers(50, 100, parities[0], parities[1], now) .Select(n => new Num { Val = n.Value }) .ToList(); var existingNumbers = db.BulkSelectExisting <Num, Number>(new BulkSelectRequest <Num> { Items = nums, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Val", EntityPropertyName = "Value" }, } }); for (int i = 0; i < 100; i++) { Assert.AreSame(nums[i], existingNumbers[i]); } } }
public static double ConvertNumber([NotNull] NumberContext ctx) { string numer = ctx.GetText(); if (numer[0] == '0') { if (numer[1] == 'x') { numer = Convert.ToInt64(numer, 16).ToString(); } else { numer = Convert.ToInt64(numer, 8).ToString(); } } return(double.Parse(numer, ConsolePrinter.FORMAT)); }
/// <summary> /// This method determines which Enum type the current number belongs to. /// </summary> /// <param name="thisNumber"></param> /// <returns></returns> public CriteriaType IdentifyNumberType(int thisNumber) { var context = new NumberContext(); foreach(var strategy in context.Strategies.OrderBy(x => x.Key)) { // return the associated enum for this strategy if it is evaluated to be this type if (strategy.Value.Keys.SingleOrDefault().IAmThisNumber(thisNumber)) { return strategy.Key; } } // if somehow it is none of the above then return None // This should never get hit but it is best to handle it with a value. return CriteriaType.None; }
public void ExistingEntitiesShouldBeSelectedOnSingleKey() { using (var db = new NumberContext()) { var now = DateTime.Now; var numbers = GenerateNumbers(1, 200, now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); foreach (var number in numbers) { Console.WriteLine($"{number.Id};{number.Value}"); } var nums = GenerateNumbers(50, 100, now) .Select(n => new Num { Val = n.Value }) .ToList(); var existingNumbers = db.BulkSelect <Num, Number>(new BulkSelectRequest <Num> { Items = nums, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Val", EntityPropertyName = "Value" }, } }); //var expectedNumbers = numbers.Skip(49).Take(100).ToArray(); //for (int i = 0; i < 100; i++) //{ // Assert.AreEqual(expectedNumbers[i].Id, existingNumbers[i].Id); // Assert.AreEqual(expectedNumbers[i].ParityId, existingNumbers[i].ParityId); // Assert.AreEqual(expectedNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture), existingNumbers[i].UpdatedAt.ToString(CultureInfo.InvariantCulture)); // Assert.AreEqual(expectedNumbers[i].UpdatedBy, existingNumbers[i].UpdatedBy); // Assert.AreEqual(expectedNumbers[i].Value, existingNumbers[i].Value); //} } }
public void NumberContextShouldHaveAllSeedData_WhenIntialized() { // Arrange using (var context = new NumberContext(SqlLiteMemoryContextOptions())) { context.Database.EnsureCreated(); // Act context.Initialize(); var result = context.Numbers; // Assert // Update the test if the seed data is ever updated // If this is a regular occurance or you plan to allow seed data to be configurable // Update this test and the context to accept it in another way result.Should().HaveCount(100); } }
public void EntitiesOfDifferentTypeMatchingExistingEntitiesShouldBeSelected() { using (var db = new NumberContext()) { var now = DateTime.Now; // Save 200 numbers (1 to 200) to the database. var numbers = GenerateNumbers(1, 200, now).ToArray(); db.BulkInsertAll(new BulkInsertRequest <Number> { Entities = numbers, Recursive = true }); // Create a list of 100 numbers with values 151 to 250 var nums = GenerateNumbers(151, 100, now) .Select(n => new Num { Val = n.Value }) .ToList(); // Numbers 151 to 200 out of 151 to 250 should be selected. var existingNumbers = db.BulkSelectExisting <Num, Number>(new BulkSelectRequest <Num> { Items = nums, KeyPropertyMappings = new[] { new KeyPropertyMapping { ItemPropertyName = "Val", EntityPropertyName = "Value" }, } }).ToArray(); Assert.AreEqual(50, existingNumbers.Length); for (int i = 0; i < 50; i++) { Assert.AreEqual(nums[i], existingNumbers[i]); } } }
private void SortButton_Click(object sender, RoutedEventArgs e) { using (context = new NumberContext()) { context.SortNumbers.RemoveRange(context.SortNumbers); var sortNumbers = context.Numbers.OrderBy(el => el.Value).Select(el => el.Value).ToList(); foreach (var el in sortNumbers) { SortNumber element = new SortNumber(); element.Value = el; context.SortNumbers.Add(element); } context.SaveChanges(); context.SortNumbers.Load(); sortNumbersGrid.ItemsSource = context.SortNumbers.Local.ToBindingList(); } }
public NumberContext number() { NumberContext _localctx = new NumberContext(Context, State); EnterRule(_localctx, 24, RULE_number); try { EnterOuterAlt(_localctx, 1); { State = 89; Match(NUMBER); } } catch (RecognitionException re) { _localctx.exception = re; ErrorHandler.ReportError(this, re); ErrorHandler.Recover(this, re); } finally { ExitRule(); } return(_localctx); }
public MathFuncNode VisitNumber([NotNull] NumberContext context) { string intPart = context.intPart != null ? context.intPart.Text : "0"; string fracPart; string periodPart; if (context.fracTail() != null) { var fracTail = context.fracTail(); fracPart = fracTail.fracPart != null ? fracTail.fracPart.Text : "0"; periodPart = fracTail.periodPart != null ? fracTail.periodPart.Text : "0"; } else { fracPart = "0"; periodPart = "0"; } var rational = Rational <long> .FromDecimal(intPart, fracPart, periodPart); return(new ValueNode(rational)); }
public NumberContext number() { NumberContext _localctx = new NumberContext(_ctx, State); EnterRule(_localctx, 0, RULE_number); int _la; try { EnterOuterAlt(_localctx, 1); { State = 4; _la = _input.La(1); if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OctNumber) | (1L << DecNumber) | (1L << HexNumber))) != 0))) { _errHandler.RecoverInline(this); } else { if (_input.La(1) == TokenConstants.Eof) { matchedEOF = true; } _errHandler.ReportMatch(this); Consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.ReportError(this, re); _errHandler.Recover(this, re); } finally { ExitRule(); } return(_localctx); }
public void PrimaryKeyColumnMappedToPropertyWithDifferentNameShouldBeAllowed() { using (var db = new NumberContext()) { var now = DateTime.Now; // The Parity table is defined with a pk column named Key but // it is mapped to the property Id. There was a user reporting that // this did not work properly so we want to test it. var parities = new[] { new Parity { Name = "Even", UpdatedAt = now, UpdatedBy = "Måns" }, new Parity { Name = "Odd", UpdatedAt = now, UpdatedBy = "Måns" }, }; db.BulkInsertAll(parities); Assert.IsTrue(parities[0].Id > 0); Assert.IsTrue(parities[1].Id > 0); } }
private void FillButton_Click(object sender, RoutedEventArgs e) { using (context = new NumberContext()) { context.Numbers.RemoveRange(context.Numbers); Random rand = new Random(); int count = rand.Next(1, 10); for (int i = 0; i < count; i++) { Number number = new Number(); number.Value = rand.Next(1, 11); context.Numbers.Add(number); } context.SaveChanges(); context.Numbers.Load(); randNumbersGrid.ItemsSource = context.Numbers.Local.ToBindingList(); SortButton.IsEnabled = true; } }
/// <summary> /// Takes in a number and a type, Fizz, Buzz, FizzBuzz or None /// and writes the appropriate output to the console app. This is a static class /// so it wouldn't be a bad idea to write an adapter for it (DI and testing purposes) /// </summary> /// <param name="number"></param> /// <param name="type"></param> public static void LogNumber(this int number, CriteriaType type) { // calling our context to resolve our number type and return the correct Print method. var context = new NumberContext(); context.PrintRelationships(number, type); }
public NumberContext number() { NumberContext _localctx = new NumberContext(Context, State); EnterRule(_localctx, 164, RULE_number); try { State = 1051; switch (TokenStream.La(1)) { case DECIMAL_INTEGER: case OCT_INTEGER: case HEX_INTEGER: case BIN_INTEGER: EnterOuterAlt(_localctx, 1); { State = 1048; integer(); } break; case FLOAT_NUMBER: EnterOuterAlt(_localctx, 2); { State = 1049; Match(FLOAT_NUMBER); } break; case IMAG_NUMBER: EnterOuterAlt(_localctx, 3); { State = 1050; Match(IMAG_NUMBER); } break; default: throw new NoViableAltException(this); } } catch (RecognitionException re) { _localctx.exception = re; ErrorHandler.ReportError(this, re); ErrorHandler.Recover(this, re); } finally { ExitRule(); } return _localctx; }