diff --git a/t/builder.vim b/t/builder.vim
new file mode 100644
index 00000000..b96d8deb
--- /dev/null
+++ b/t/builder.vim
@@ -0,0 +1,47 @@
+call airline#init#bootstrap()
+
+describe 'active builder'
+  before
+    let s:builder = airline#builder#new({'active': 1})
+  end
+
+  it 'should have a call to check mode'
+    let stl = s:builder.build()
+    Expect stl =~ '%{airline#check_mode()}'
+  end
+
+  it 'should transition colors from one to the next'
+    call s:builder.add_section('Normal', 'hello')
+    call s:builder.add_section('NonText', 'world')
+    let stl = s:builder.build()
+    Expect stl =~ '%#Normal#hello%#Normal_to_NonText#>%#NonText#world'
+  end
+
+  it 'should split left/right sections'
+    call s:builder.split()
+    let stl = s:builder.build()
+    Expect stl =~ '%='
+  end
+
+  it 'after split, sections use the right separator'
+    call s:builder.split()
+    call s:builder.add_section('Normal', 'hello')
+    call s:builder.add_section('NonText', 'world')
+    let stl = s:builder.build()
+    Expect stl =~ '%#Normal#hello%#Normal_to_NonText#<%#NonText#world'
+  end
+end
+
+describe 'inactive builder'
+  before
+    let s:builder = airline#builder#new({'active': 0})
+  end
+
+  it 'should transition colors from one to the next'
+    call s:builder.add_section('Normal', 'hello')
+    call s:builder.add_section('NonText', 'world')
+    let stl = s:builder.build()
+    Expect stl =~ '%#Normal_inactive#hello%#Normal_to_NonText_inactive#>%#NonText_inactive#world'
+  end
+end
+
diff --git a/t/init.vim b/t/init.vim
index 8aa4e1e6..72a42f66 100644
--- a/t/init.vim
+++ b/t/init.vim
@@ -1,9 +1,21 @@
-for key in ['a', 'b', 'c', 'gutter', 'x', 'y', 'z', 'warning']
-  unlet! g:airline_section_{key}
-endfor
-call airline#init#bootstrap()
+let s:sections = ['a', 'b', 'c', 'gutter', 'x', 'y', 'z', 'warning']
+
+function! s:clear()
+  for key in s:sections
+    unlet! g:airline_section_{key}
+  endfor
+endfunction
 
 describe 'init'
+  before
+    call s:clear()
+    call airline#init#bootstrap()
+  end
+
+  after
+    call s:clear()
+  end
+
   it 'section a should have mode, paste, iminsert'
     Expect g:airline_section_a =~ 'mode'
     Expect g:airline_section_a =~ 'paste'
@@ -33,5 +45,15 @@ describe 'init'
     Expect g:airline_section_z =~ '%3l'
     Expect g:airline_section_z =~ '%3c'
   end
+
+  it 'should not redefine sections already defined'
+    for s in s:sections
+      let g:airline_section_{s} = s
+    endfor
+    call airline#init#bootstrap()
+    for s in s:sections
+      Expect g:airline_section_{s} == s
+    endfor
+  end
 end