@Override
    public Collection<SQLTokenGenerator> getSQLTokenGenerators() {
        Collection<SQLTokenGenerator> result = new LinkedList<>();
        addSQLTokenGenerator(result, new EncryptSelectProjectionTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertSelectProjectionTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertAssignmentTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptUpdateAssignmentTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptPredicateColumnTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptPredicateRightValueTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertValuesTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertDefaultColumnsTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertCipherNameTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertDerivedColumnsTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptInsertOnUpdateTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptGroupByItemTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptIndexColumnTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptCreateTableTokenGenerator(encryptRule));
        addSQLTokenGenerator(result, new EncryptAlterTableTokenGenerator(encryptRule));
        return result;
    }
@Test
    void assertGetSQLTokenGenerators() {
        SelectStatementContext selectStatementContext = mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
        when(selectStatementContext.getTablesContext().getSimpleTables().isEmpty()).thenReturn(false);
        when(selectStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.singleton("table"));
        when(selectStatementContext.getOrderByContext().getItems()).thenReturn(Collections.singleton(mock(OrderByItem.class)));
        when(selectStatementContext.getGroupByContext().getItems()).thenReturn(Collections.emptyList());
        when(selectStatementContext.getWhereSegments()).thenReturn(Collections.emptyList());
        EncryptTokenGenerateBuilder encryptTokenGenerateBuilder = new EncryptTokenGenerateBuilder(encryptRule, selectStatementContext, Collections.emptyList(), DefaultDatabase.LOGIC_NAME);
        Collection<SQLTokenGenerator> sqlTokenGenerators = encryptTokenGenerateBuilder.getSQLTokenGenerators();
        assertThat(sqlTokenGenerators.size(), is(1));
        Iterator<SQLTokenGenerator> iterator = sqlTokenGenerators.iterator();
        SQLTokenGenerator item1 = iterator.next();
        assertThat(item1, instanceOf(EncryptSelectProjectionTokenGenerator.class));
    }