/ *
XOWA: the XOWA Offline Wiki Application
Copyright ( C ) 2012 gnosygnu @gmail.com
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation , either version 3 of the
License , or ( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU Affero General Public License for more details .
You should have received a copy of the GNU Affero General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
* /
package gplx.dbs.qrys ; import gplx.* ; import gplx.dbs.* ;
import org.junit.* ; import gplx.dbs.sqls.* ;
public class Db_qry_select_tst {
@Before public void setup ( ) {
cmd = new Db_qry__select_cmd ( ) ;
} Db_qry__select_cmd cmd ; String expd ;
@Test public void Basic ( ) {
cmd . Cols_ ( "fld0" , "fld1" ) . From_ ( "tbl0" ) ;
expd = "SELECT fld0, fld1 FROM tbl0" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void OrderDoesNotMatter ( ) {
cmd . From_ ( "tbl0" ) . Cols_ ( "fld0" , "fld1" ) ;
expd = "SELECT fld0, fld1 FROM tbl0" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void DefaultAllFields ( ) {
cmd . From_ ( "tbl0" ) ;
expd = "SELECT * FROM tbl0" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void Where ( ) {
cmd . From_ ( "tbl0" ) . Where_ ( Db_crt_ . New_eq ( "fld0" , 0 ) ) ;
expd = "SELECT * FROM tbl0 WHERE fld0 = 0" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void Join ( ) {
cmd . From_ ( "tbl0" ) . Join_ ( "tbl1" , "t1" , Db_qry_ . New_join__join ( "fld1" , "tbl0" , "fld0" ) ) ;
expd = "SELECT * FROM tbl0 INNER JOIN tbl1 t1 ON tbl0.fld0 = t1.fld1" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void OrderBy ( ) {
cmd . From_ ( "tbl0" ) . Order_ ( "fld0" , true ) ;
expd = "SELECT * FROM tbl0 ORDER BY fld0" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void OrderByMany ( ) {
cmd . From_ ( "tbl0" ) . Order_asc_many_ ( "fld0" , "fld1" ) ;
expd = "SELECT * FROM tbl0 ORDER BY fld0, fld1" ;
tst_XtoStr ( cmd , expd ) ;
}
@Test public void Limit ( ) {
cmd . From_ ( "tbl0" ) . Limit_ ( 10 ) ;
expd = "SELECT * FROM tbl0 LIMIT 10" ;
tst_XtoStr ( cmd , expd ) ;
}
// @Test public void GroupBy() {
// cmd.From_("tbl0").groupBy_("fld0", "fld1");
// expd = "SELECT fld0, fld1 FROM tbl0 GROUP BY fld0, fld1";
// Tfds.Eq(cmd.To_str(), expd);
// }
// @Test public void Union() {
// cmd.From_("tbl0").select("fld0").union_(qry2.from("tbl1").select("fld0"));
// cmd.From_("tbl0").select("fld0").union_().from("tbl1").select("fld0"); // feasible, but will be bad later when trying to access Db_qry__select_cmd props
// expd = "SELECT fld0 FROM tbl0 UNION SELECT fld0 FROM tbl1";
// Tfds.Eq(cmd.To_str(), expd);
// }
// @Test public void Having() {
// cmd.From_("tbl0").groupBy_("fld0", "fld1");
// expd = "SELECT fld0, fld1 FROM tbl0 GROUP BY fld0, fld1 HAVING Count(fld0) > 1";
// Tfds.Eq(cmd.To_str(), expd);
// }
void tst_XtoStr ( Db_qry qry , String expd ) { Tfds . Eq ( expd , cmd . To_sql__exec ( Sql_qry_wtr_ . Basic ) ) ; }
}