input: Write a function to generate n-grams of the given text with a specified window size. If the window size is greater than the length of the text, return an empty list.
  
  def generate_ngrams(text, window_size):
      text = text.lower().split(' ')
      if window_size > len(text):
          return []
      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 ngrams
  
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 3) == ['the quick brown', 'quick brown fox', 'brown fox jumps', 'fox jumps over', 'jumps over the', 'over the lazy', 'the lazy dog']
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 4) == ['the quick brown fox', 'quick brown fox jumps', 'brown fox jumps over', 'fox jumps over the', 'jumps over the lazy', 'over the lazy dog']
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 5) == ['the quick brown fox jumps', 'quick brown fox jumps over', 'brown fox jumps over the', 'fox jumps over the lazy', 'jumps over the lazy dog']
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 10) == []
  assert generate_ngrams("", 3) == []
  assert generate_ngrams("The quick brown fox jumps over the lazy dog", 1) == ['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
output: def generate_ngrams(text, window_size):
      text = text.lower().split(' ')
      if window_size > len(text):
          return []
      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 ngrams