|  | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package | 
|  | // | 
|  | // Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved. | 
|  | // | 
|  | // This Source Code Form is subject to the terms of the Mozilla Public | 
|  | // License, v. 2.0. If a copy of the MPL was not distributed with this file, | 
|  | // You can obtain one at http://mozilla.org/MPL/2.0/. | 
|  |  | 
|  | // +build go1.8 | 
|  |  | 
|  | package mysql | 
|  |  | 
|  | import ( | 
|  | "database/sql" | 
|  | "database/sql/driver" | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | func TestIsolationLevelMapping(t *testing.T) { | 
|  | data := []struct { | 
|  | level    driver.IsolationLevel | 
|  | expected string | 
|  | }{ | 
|  | { | 
|  | level:    driver.IsolationLevel(sql.LevelReadCommitted), | 
|  | expected: "READ COMMITTED", | 
|  | }, | 
|  | { | 
|  | level:    driver.IsolationLevel(sql.LevelRepeatableRead), | 
|  | expected: "REPEATABLE READ", | 
|  | }, | 
|  | { | 
|  | level:    driver.IsolationLevel(sql.LevelReadUncommitted), | 
|  | expected: "READ UNCOMMITTED", | 
|  | }, | 
|  | { | 
|  | level:    driver.IsolationLevel(sql.LevelSerializable), | 
|  | expected: "SERIALIZABLE", | 
|  | }, | 
|  | } | 
|  |  | 
|  | for i, td := range data { | 
|  | if actual, err := mapIsolationLevel(td.level); actual != td.expected || err != nil { | 
|  | t.Fatal(i, td.expected, actual, err) | 
|  | } | 
|  | } | 
|  |  | 
|  | // check unsupported mapping | 
|  | expectedErr := "mysql: unsupported isolation level: 7" | 
|  | actual, err := mapIsolationLevel(driver.IsolationLevel(sql.LevelLinearizable)) | 
|  | if actual != "" || err == nil { | 
|  | t.Fatal("Expected error on unsupported isolation level") | 
|  | } | 
|  | if err.Error() != expectedErr { | 
|  | t.Fatalf("Expected error to be %q, got %q", expectedErr, err) | 
|  | } | 
|  | } |