input: Write a function to generate n-grams of the given text with a window size of 3. Return a Counter object containing the frequency of each n-gram.
  
  ### Function:
  from collections import Counter
  
  def generate_ngrams(text, window_size):
      text = text.lower().split(' ')
      ngrams = []
      for n in range(window_size, len(text)+1):
          for i in range(len(text)-n+1):
              ngrams.append(' '.join(text[i:i+n]))
      return Counter(ngrams)
  
  ### Assertions:
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 3) == Counter({'the quick brown': 3, 'quick brown fox': 2, 'over the lazy': 1, 'brown fox jumps': 1, 'fox jumps over': 1, 'the lazy dog': 1, 'jumps over the': 1, 'quick brown fox jumps': 1})
  assert generate_ngrams("", 3) == Counter()
  assert generate_ngrams("a b c", 3) == Counter({'a b c': 1})
  assert generate_ngrams("a a a", 3) == Counter({'a a a': 1})
  assert generate_ngrams("a a b b", 3) == Counter({'a a b': 1, 'a b b': 1})
output: from collections import Counter
  
  def generate_ngrams(text, window_size):
      text = text.lower().split(' ')
      ngrams = []
      for i in range(len(text) - window_size + 1):
          ngrams.append(' '.join(text[i:i+window_size]))
      return Counter(ngrams)